Grauw’s blog

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

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.

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...