Alex Wulms should know about the VDP command engine... as he wrote it
I confirm that the VDP command engine in the OCM is faster then in the real MSX. Getting the timing exactly the same is difficult. Ideally, I would need to measure at bus level how the real VDP behaves so that I can build a better model for the state machine but for that I would need to connect a digital scope to my real MSX. Unfortunately I don't have a digital scope so this path to further analyze the timing is not possible for me.
Though, an alternative is to read status register 8 during command execution (it contains the tmpSX value used to keep track of the source-x coordinate during copy commands). By analyzing how this one changes (with screen on or off, with sprites on or off, etc) it should be possible to build a better timing model and improve the OCM accordingly.
It is still on my to-do list to make the test programs and analyze the results.
Kind regards,
Alex
SystemTimer(TurboR compatible I/O port E6h, E7h) is installed in EMSX_TOP_20080502_002.ZIP.
I made the bench mark of HMMM by using it.
HMMM(Sprite ON) of OCM was about genuine twice velocity.
It is difficult to match it completely.
However, it is possible to bring it close a little more
I will add a high-speed mode and the real mode to VDP.
bench mark
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/vdpcmd.zip
FS-A1ST(turbo mode): 18948
BlueMSX turboR emulation: 18872
EMSX_TOP_20080502(3.58MHz mode): 9867
(*)The smaller the value is, the more high-speed.
I want various bench marks.
I want someone to make it :P
New update PLD:
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/emsx_top_20080502_003.zip
Updates:
1) VDP Command speed fixed.
2) [F12]+[SHIFT] key toggle VDP Command speed added. (Normal/High speed)
Memo:
The speed of the Normal mode of 95% against the real thing. It is a little slow.
The speed of a high-speed mode of 500% against the real thing. It is considerably fast:D
bench mark
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/vdpcmd.zip
FS-A1ST(turbo mode): 18948
BlueMSX turboR emulation: 18872
EMSX_TOP_20080502(3.58MHz mode): 9867
OCM_DE1(3.5MHz mode)
(Normal VDP):19715
(Turbo VDP):3589
OCM(3.58MHz mode)
Normal VDP: 19714
Turbo VDP: 3587
NormalVDP is a little slower than the real thing.
After the speed measurement of other commands ends, I fine-tune it.
New update bench mark:
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/vdpcmd.zip
OCM(3.58MHz mode, Normal VDP) -------------------------
YMMM = 19797
HMMM = 19718
HMMV = 8237
LMMM = 14792
TOTAL PROC TIME = 62544
FS-A1ST(R800) -------------------------------------------------
YMMM = 16211
HMMM = 18961
HMMV = 7809
LMMM = 13541
TOTAL PROC TIME = 56522
OCM(3.58MHz mode, Turbo VDP) ---------------------------
YMMM = 3596
HMMM = 3580
HMMV = 1267
LMMM = 3261
TOTAL PROC TIME = 11704
Hmm..
The speed difference seems to have the difference in each command.
New update PLD:
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/emsx_top_20080502_003.zip
I've tested this version and XAK freezes during the intro (when the green mountain appears for the second time). The scene says (as I cannot write in Japanese I will put here the English translation (thanks Woomb! B-))):
"A huge pillar of light broke through the ice wall in front of him and pierced the clouds"
And now I've tested this game in each version of OCM I have (even original and last KdL one) and same happens. So I suppose it was a known problem. :-?
I think I have to read too much about bugs/corrections! :P
[EDIT] Read from MSX Banzai! (xak 1 sound corruption causes game to fail). So here I've got my answer. :)
I've tested this version and XAK freezes during the intro
I did not know the problem.
Certainly, Xak is freezed according to the timing of lightning
I will investigate it.
New update PLD:
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/files/emsx_top_20080503_001.zip
Update:
(1) VDP Command speed fixed.
--> Added "VDP_WAIT_CONTROL.VHD"
--> VDP_WAIT_CONTROL is VDP Command speed adjuster.
Bug Memo:
(1) Player on "arkanoah" undisplay.
(2) V-Killer sprite blinking.
(3) VDP Command is faster than real VDP. (unconfirmed)
(4) Xak demo freeze.