Dumping Game Boy Cartridges Via The Link Cable Port

When it comes to vintage consoles like the Game Boy, it’s often nice to be able to dump cartridge ROMs for posterity, for archival, and for emulation. To that end, [Francis Stokes] of [Low Byte Productions] whipped up a rather unique method of dumping Game Boy carts via the link cable port.

The method starts by running custom code on the Game Boy, delivered by flash cart. That code loads itself into RAM, and then waits for the user to swap in a cart they wish to dump and press a button. The code then reads the cartridge, byte by byte, sending it out over the link port. To capture the data, [Francis] simply uses a Saleae logic analyzer to do the job. Notably, the error rate was initially super high with this method, until [Francis] realised that cutting down the length of the link cable cut down on noise that was interfering with the signal.

The code is available on GitHub for those interested. There are other ways to dump Game Boy cartridges too, of course.

17 thoughts on “Dumping Game Boy Cartridges Via The Link Cable Port

  1. It should be noted this trick will not work on the original “fat” Gameboy because the power switch has a sliding tab that locks the cart slot, preventing one from inserting or removing a cart. Modding to remove the tab or using Gameboy Pocket or Gameboy Color should work instead.

  2. So, obviously, there is a finite number of game titles, and several ways of downloading them. Since we have a global interconnected network wouldn’t it make sense to collaborate and have a small number of people download the cartridge contents, then store them in a way that is accessible via the network? We could do this with other things too, like sheet music and newspapers, this making it easier to distribute the information virtually for free to anyone who wants it!

    1. That’s an interesting idea, but may not be legal everywhere. Many countries legal systems allow you to make and keep a backup of purchased software, despite the fact that making a duplicate is what they would refer to as piracy.
      You could lobby to remove that piracy law, but that would have the effect of creating a disincentive for artists to create software, unless it was replaced with a subsidized open source system. That’s just passing the cost of production on to someone else which isn’t fair to them.

      1. Not really. There is a middle ground between the rather silly system today and no IP protection.
        The issue is people obtaining it without having a right to it. If you’ve purchased the physical media then you could be permitted to download a copy from the interwebs rather than needing to download it from your physical copy. There’s no difference in terms of payment to the artist.
        Keep your receipts.

        1. IANAL but from how i understand German copyright law you are allowed a private backup copy of your original, and now comes the wording for the philosophers and lawyers, without breaking a working copy protection, in German “Wirksamer Kopierschutz”.
          My stance, obviously its not working if it can be broken so i can make a backup copy of my original. For example having tons on DVDs on the shelf for decoration purposes and playing the movies from my NAS.

          The main question however is, does it matter if i make the backup myself or ask a friend to make one for me and send it over to be proverbialy placed next to my original?

    2. In the US, format shifting is legal by precedent, provided that there’s no copy protection (which drags the DMCA). And it’s only legal if you do it yourself privately. All the cartridges have already been dumped and online for literally decades. But with a hack this simple, you have probable deniability that you didn’t download it. Maybe you dumped the cartridges and then got rid of the special cartridge that enabled this.

      Personally, I don’t emulate any games I haven’t bought a physical cartridge for. Maybe I dumped them all myself. Who can say?

  3. While this is a neat hack, it’s also foolishly optimistic, and shouldn’t be used for any serious preservation. It’s a throwback to cartridge dumping back in the 90’s and early 00’s.

    Reading the cartridge byte-by-byte doesn’t account for memory mappers, and it especially is going to fall over in the case of the countless unlicensed cartridges that actively go out of their way to have protection against read-out unless the game code itself makes just the right “special knocks” over the bus.

    1. You can account for the memory mappers by reading the cartridge header (at least in official games) – they have bytes to describe the MBC and banked RAM capabilities. Since changing banks is often just a case of writing to a particular MMIO address, it would be pretty straightforward to incorporate.
      The natural extension of the idea is to offload most of the smarts to another device (either a micro or an actual computer), and then build a little command interpreter into the custom ROM, which allows the other end of the connection to send arbitrary reads and writes. That would allow for coding all of the logic for talking to any MBC without needing to write it in an 8-bit assembly language.
      But of course this isn’t intended to be the future of ROM dumping – it’s just a fun project.

  4. Video creator here – just wanted to note that I’m not the first person in the world to do this. Nick Palmer had a pretty extensive setup going 6 years ago: https://github.com/Palmr/cart-dumper
    He mentioned to me that he had some issues swapping carts; Essentially, a decent amount of the time, the pulling the flash cart would cause the GameBoy to reset – probably because of the sudden change on the reset line, which is connected to the cartridge port. I haven’t experienced any of that myself, and I wonder if different hardware revisions might have something to do with it – perhaps later hardware had better power decoupling (the reset line is pulled up I believe), which would be better able to handle the sudden change of a cart swap. Something that needs more investigation and a dive into the schematics that I know are floating around out there somewhere!

    1. I’ve done some cart swapping on my CGB (revision E) and I noticed that how you pull out the cart is quite important. If you tilt the cart the to the left or right while pulling it out, so the right lines get disconnected last, your success rate goes up quite a bit.

      Swapping to an EZFlashJr always resets the gameboy, as they pull the reset low during startup to give some time to start up the internal FPGA or whatever they are using. So different carts also have effect on this.

      The schematics are here: https://gbdev.io/resources.html#hardware and a lot of other documentation as well.

  5. Dumping ROM through a new method is neat, but as others noted there’s no shortage of ROMs online. Is there a similar method for dumping SRAM? I have a ~20 year old Dragon Quest III save that I’d like to back up before the battery dies.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.