#10 defective emulation in GBC DQ3 (J)

v1.0 (example)

"Dragon Quest III - Soshite Densetsu e... (Japan)" GBC has a serious bug that we can go debug mode.
When we use a bugged item called "なし"(nothing), junk data is written in RAM, and it usually freezes, but we can sometimes go debug mode.
On real console, the graphics are not broken, though the graphics of the fields are broken on Gambatte.

cheat code to put the "なし" item in the item box of the first man .: 01E58AC5

in debug mode, we can go ending credit, when we choose "4. MORIテスト"(MORI Test).
We can warp anywhere you want, when we choose "2. ひぐち テスト"(Higuchi Test).
in both case, the graphics of the field are corrupted.

many emulators seem to have the same problem.
Only on bgb, the graphics are not broken. i think it may help the analysis.

replay movie file(no cheat) : http://www.mediafire.com/?63gn1g4p1w5f2c7 (works on Bizhawk that use Gambatte core)
mp4 of the replay movie: http://www.youtube.com/watch?v=-BPMbCj2J38&feature=player_detailpage#t=385s

VBA-M makes the same broken graphics too. :
movie file for VBA-M: http://tasvideos.org/userfiles/info/2162614622808571

The graphics are not broken on real GBC console:
http://www.youtube.com/watch?feature=player_detailpage&v=oyjXuMf9nyI#t=594s (he uses GBASP?, i used to enjoy the bug on GBC and remember no graphics broken too)


  • sinamas

    sinamas - 2012-12-09

    on my gbc, with sram dumped from your movie, there's neither freezing nor a debug menu, you just get a text response and the music disappears.
    on my gba sp it just freezes up, sometimes with a garbled screen.
    I wouln't be so sure that bgb has it right.
    it's interesting that the behavior is so inconsistent.

  • sinamas

    sinamas - 2012-12-09

    got the debug menu to trigger once on my gba sp, but it froze right after starting the ending sequence.
    still nothing on the cgb.

  • sinamas

    sinamas - 2012-12-09

    finally got it to trigger on my cgb. the overworld tiles are fine.
    in any case it's just as interesting that it doesn't freeze on the cgb when it fails.

  • tetora_x

    tetora_x - 2012-12-10

    I'm very glad that you are working on fixing it now. :)
    yeah, the debug mode rarely happens, especially on real consoles, where we can't do save&loadstate.

  • sinamas

    sinamas - 2012-12-11

    thanks a lot for the report. will be looking at it when I have time.

  • sinamas

    sinamas - 2014-07-20

    holy shit! this appears to depend on the joypad irq. i had almost forgotten that existed. a loop that is entered with invalid parameters terminates when it reaches a sentinel of 0xf0, which it hits at IF if the joypad irq is flagged, but otherwise continues on and overwrites a value that is later used as a dma loop count which is why tiles end up scrambled.

  • sinamas

    sinamas - 2014-07-22

    fixed in commit d8bb275e5e77cf5a192c702cde5a5c7d56b5f91a.

  • sinamas

    sinamas - 2014-09-28
    • status: open --> closed-fixed
    • Group: --> v1.0 (example)

Log in to post a comment.