Author Topic: Consistent unpredictably bad dumps of a single Game Boy Color game  (Read 217 times)

Offline obskyr

  • Baby Retrode
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
    • My Twitter!
The game in question is Kotobattle for the Game Boy Color. The symptoms are bizarre: no matter how many times I dump it, between 60 and 110 half-random bytes are incorrect. The contacts are immaculate and shiny (I even gave 'em a peace-of-mind clean with the ol' IPA and cotton bud combo). I dumped it ten times, and the results are these:

Code: [Select]
$ md5sum Kotobattle-*.gb
d58feb9bbe47a85dfbbdd541d278527b  Kotobattle-01.gb
47ca90c3e3f4f0f2d90eb7892fb5c4b2  Kotobattle-02.gb
5cc853c53f5e059d70c8bbf80d8869ad  Kotobattle-03.gb
db25f20e465cc3fbdd67f41a53317bec  Kotobattle-04.gb
46e389da50a2f7acd3dc72ceb8bc7a1d  Kotobattle-05.gb
55036e98f2c510d8f39641289e82e44d  Kotobattle-06.gb
0082fb3b7b0e008614be5e3689cc4a37  Kotobattle-07.gb
3890769be1f9a7595b070912fe198222  Kotobattle-08.gb
436b3fee8a7157b524aafd73347c3655  Kotobattle-09.gb
c3cb623adde261202af1dfe563666808  Kotobattle-10.gb

None of these match the expected hash of 43351CD46357BD1615A713490401FDA8. Across these ten dumps, a total of 251 addresses were dumped incorrectly at least once. Most of these (86 addresses) were incorrect only once, but some were incorrect most every time, often in similar ways. For example, 0x1C9738 was 0x03 (which is incorrect) in eight dumps, and 0x00 (which is correct) in the other two. Most of the time, though, the errors are somewhat different – like 0x0785FC, for which 0x00 is correct, which dumped incorrectly seven times as 0xFB, 0x02, 0x93, 0x02, 0xFB, 0x02, and 0x02. Another interesting pattern is that most of these errors (206 out of 251 addresses) occurred with bytes that should've been 0x00, which may or may not mean something.

The extremely weird part is this: Kotobattle has the exact same MBC (MBC5) – and even PCB (DMG-A08-10; pictures of an identical board here) – as another game I tried dumping, and yet, Kotobattle has random incorrect bytes while the other consistently dumps well. Dumping SRAM also works totally fine every time.

That the MBC and PCB are the same as for a working game suggests that it's a software issue, but the fact that the faults are so intermittent suggests a hardware issue. I'm deeply perplexed. Does anyone have any idea what the problem could possibly be?

My Retrode is hardware version 2.2, firmware version .25a-beta, and I'm on Windows 10.

Edit:
I've now tried reflowing the mask ROM and the MBC to no avail. The same mind-boggling symptoms persist. It's a bit hard to see any meaningful pattern (you can see the incorrect bytes from each dump collated here), but someone mentioned one thing: incorrectly dumped addresses with the same last three nibbles sometimes appear exactly twice. For example, 0x0907DC was incorrect 10/10 times, and 0x0AC7DC (also ends in 0x7DC) was incorrect 9/10 times – 0x5F0, 0xEBC, and 0x5C0 exhibit the same property.

At this point I'm almost considering a faulty ROM chip, but… I've never heard of mask ROM failing!
« Last Edit: 03/Mar/2019 09:30:29 PM by obskyr »

Offline obskyr

  • Baby Retrode
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
    • My Twitter!
I finally have a solution to this mystery, an answer to this conundrum, an end to this saga. Based on the vague patterns in the addresses that were dumping incorrectly, and the intermittence of it all, I guessed that the MBC perhaps was ever so slightly on the frizz. Without much recourse in software, I ended up desoldering the MBC and switching it out for one from a cartridge that dumped fine. And… it fixed the issue! The cartridge dumps without a hitch now! The culprit was a faulty MBC.

(It's also possible that the MBC only had problems when accessed with the Retrode's voltage and timing, but let's not entertain that notion and lie awake at night thinking "what if".)