notaz / picodrive

Fast MegaDrive/MegaCD/32X emulator
Other
290 stars 162 forks source link

Fido Dido (Megadrive) breaks in bonus stage #2 w/fix info #120

Open dinkc64 opened 3 years ago

dinkc64 commented 3 years ago

Fido Dido (USA, Prototype) is a complete game, although a proto because it was never released. When you get to the bonus round #2, it makes some unmapped reads to 0x645046 (and another address, iirc it's 0x64504e), if it returns 0x00 here, the game breaks. It might be checking for a devboard of some sort and going into some sort of debug mode. The game works fine in kega fusion, gensplusgx, and on a real(hw) Genesis, but not PicoDrive because it's returning 0x00 for the unmapped reads.

memory.c @ m68k_unmapped_read8, m68k_unmapped_read16 possible fix: m68k_unmapped_read8: return (PicoIn.AHW & PAHW_MCD) ? 0x00 : 0xff;

m68k_unmapped_read16: return (PicoIn.AHW & PAHW_MCD) ? 0x00 : 0xffff;

I made a short video on how to get to bonus room #2, where the glitch happens. https://youtu.be/KKMS9b07Ywc

When you get to the level with the gun using PicoDrive, the game will basically be unplayable: the screen will fill with bottle sprites and cause the player sprite to flicker. This video doesn't show the bug - it just shows how to get to the bonus room quickly for testing.

best regards,