Grauw’s blog
1 chip MSX VDP speed measurements
Hey all,
I ran some measurements to determine the VDP speed of the one chip MSX, running at 10 MHz. The results are below (the entries with ‘....’ are not measured).
The original v9938 results and the test program for these measurements were taken from the VDP commands ~ speed measurements article on the MSX Assembly Page.
Results for copies
Normal v9938
LMMM accuracy: 16 HMMM accuracy: 32 YMMM accuracy: 32 Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz on / 212 - 1232 / 976 on / 212 - 3552 / 2784 on / 212 - 4192 / 3168 on / 192 - 1264 / 1008 on / 192 - 3616 / 2880 on / 192 - 4384 / 3360 off / 212 - 1584 / 1312 off / 212 - 4384 / 3616 off / 212 - 5856 / 4832 off / 192 - 1584 / 1312 off / 192 - 4384 / 3684 off / 192 - 5856 / 4864 --Blank-- - 1600 / 1344 --Blank-- - 4512 / 3776 --Blank-- - 6112 / 5120
OCM v9938 implementation
LMMM accuracy: 23 HMMM accuracy: 64 YMMM accuracy: 64 Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz on / 212 - 2176 / 1824 on / 212 - 6528 / 5472 on / 212 - 6336 / 5312 on / 192 - .... / .... on / 192 - 6528 / 5472 on / 192 - .... / .... off / 212 - .... / 1824 off / 212 - 6528 / 5472 off / 212 - .... / 5312 off / 192 - .... / .... off / 192 - 6528 / 5472 off / 192 - .... / .... --Blank-- - .... / .... --Blank-- - 6528 / 5472 --Blank-- - .... / ....
Results for fills
Normal v9938
LMMV accuracy: 16 HMMV accuracy: 64 Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz on / 212 - 1696 / 1344 on / 212 - 7040 / 5632 on / 192 - 1728 / 1392 on / 192 - 7168 / 5760 off / 212 - 1840 / 1392 off / 212 - 7232 / 5888 off / 192 - 1856 / 1504 off / 192 - 7360 / 5952 --Blank-- - 2128 / 1776 --Blank-- - 8448 / 7040
OCM v9938 implementation
LMMV accuracy: 32 HMMV accuracy: 128 Spr / Lin - Speed 50/60Hz Spr / Lin - Speed 50/60Hz on / 212 - 3264 / 2736 on / 212 - 13056 /10944 on / 192 - .... / .... on / 192 - .... / .... off / 212 - .... / 2736 off / 212 - .... /10944 off / 192 - .... / .... off / 192 - .... / .... --Blank-- - .... / .... --Blank-- - .... / ....
These results show that the VDP command emulation isn’t very accurate yet. On one hand it isn’t so bad that the speed is higher, I suppose as long as it isn’t lower most games will run just fine, I don’t think many depend on command speed.
On the other hand the lack of accuracy here makes the OCM less useful as a development platform.
Actually, according to Alex Wulms:
In 10MHz Z80 mode, the VDP command speed is the same as in the Z80 3.57 MHz mode. The VDP command speed is independent from the Z80 speed.
However, the VDP command speed is currently approximately twice as fast in the OCM as in a real MSX. So it is still a nice improvement for SymbOS.
In an earlier version of the VHDL code, the VDP command engine was between 3 and 8 times as fast, depending on the command and the screen mode. However, this speed has been reduced for compatibility and stability reasons.
So this basically confirms his findings. I can also confirm that changing the CPU speed to 3,5 MHz doesn’t change the results significantly, and the slight difference can be credited to lesser accuracy in the measurement because the command execution speed and sampling resolution of the CPU is lower.
In any case, there is still much to be improved here :).
Grauw
Comments
VDP Command speed by PingPong at 2006-12-08 12:06
This, sound very badly. The vdp speed should be roungly the same.
If i write a msx sw that works on OCM i’ve not the assurance that works on real machine...
by GuyveR800 at 2006-12-07 18:27
Looks like the command engine is completely independant from the screen rasterizer...
It probably has advantages implementation-wise and for future enhancement, but it looks like “just fixing the speed” isn’t going to be very easy.