DPC+ Jitter
DPC+ Jitter issues yet again, this time with text_adventure.
Back in 2015 I added support to Stella for jitter emulation. It was initiated by the topic Game test on Harmony Cart where bB game Doom Patrol exhibited jitter on real hardware. The jitter was caused by 2 different things:
- Overscan running longer/shorter than normal, covered in blog entry Overscan Jitter
- DPC+ jitter if the DFxFRACINC registers are not updated every frame, covered in blog entry Overscan Jitter 2, DPC+ Jitter
The topic links to the Doom Patrol topic with these ROMS:
0.5 exhibits DPC+ jitter, which is visible on the initial screen on real hardware. The playfield (DOOM PATROL text, etc) and background colors will jitter up/down, while the score display and tank do not exhibit jitter.
0.6 has been updated to set DFxFRACINC before each call to DRAWSCREEN, so does not exhibit DPC+ jitter on real hardware.
Later on this DPC+ jitter emulation caused problems with the game Epic Adventure.
Epic Adventure used a different version of the DPC+ driver than Doom Patrol did, so we modified Stella to turn off DPC+ jitter emulation if the DPC+ driver used in Epic Adventure was detected. This was done using the MD5 value of the driver, calculated by doing this in Mac Terminal (command also works under Linux):
$ dd count=3 bs=1024 if=epicadv22.bin | md5 3+0 records in 3+0 records out 3072 bytes transferred in 0.000054 secs (57012840 bytes/sec) 8dd73b44fd11c488326ce507cbeb19d1
This MD5 value is used in CartDPCPlus.cxx:
// Currently only one known DPC+ ARM driver exhibits a problem // with the default mask to use for DFxFRACLOW if(MD5::hash(image, 3_KB) == "8dd73b44fd11c488326ce507cbeb19d1") myFractionalLowMask = 0x0F0000;
Turns out I have an ENCORE build of this game as the original uses the DPC+ driver that doesn't work on the Harmony Encore. I don't know where I got it from, but it does jitter when played using the current build of Stella.
MD 5 values:
- 17884ec14f9b1d06fe8d617a1fbdcf47 - Doom Patrol-0.5.bin
- 17884ec14f9b1d06fe8d617a1fbdcf47 - Doom Patrol-0.6.bin
- 8dd73b44fd11c488326ce507cbeb19d1 - epicadv22.bin
- 5f80b5a5adbe483addc3f6e6f1b472f8 - epicadv22_encore.bin
- 5f80b5a5adbe483addc3f6e6f1b472f8 - text_adventure.bas.bin
- 5f80b5a5adbe483addc3f6e6f1b472f8 - Space Rocks Encore build
- 5f80b5a5adbe483addc3f6e6f1b472f8 - Stay Frosty 2 RC8
4 Comments
Recommended Comments