Shameless self-promotion: if you enjoyed Travis' ROM dumping, you might find my piece about sniffing the Game Boy's LCD data bus to take screenshots interesting as well.
Something that I think is even more interesting is that someone made a screen capture device that would go between the cartridge and the console and work only based on what code the game was accessing by reconstructing the entire state of the Game Boy based on what paths were taken in the code
This is really amazing, thanks for sharing! How did you know which pins to look at? And do you know what the other pins do? I’m super curious now, and actually have an original gameboy which I now want to open up :-)
I wonder if these same signals can be used to make an adapter to connect an external screen.
The Game Boy ROM is so much fun to dump in various ways. For example you can clock glitch it by just by scraping a contact with a jumper wire:
https://youtu.be/64FgfhfvJ4s?t=154
In the past when I've had to identify grids opencv worked well. Specifically the edge finding pretty reliably identified the grid. I wonder if it could work here? Maybe I provide a guide that the user can later edit?
With a microscope, after removing the packaging of the chip (with nitric acid, in this case). The readme in the linked repo goes into detail both on how they produced the image used, and how the image is used to extract the ROM.
The ROM itself is 256 bytes, and has been previously extracted using a similar technique. The last thing it does on boot (before moving on to the cartridge’s entry point, which is adjacent) is remove itself from the system’s address space, so special techniques like this are needed to extract it (can’t just do it from normal Game Boy code).
You take picture of a ROM because in the past we did not have technology to have permanent non-volatile storage on a chip. We later had eproms and eeproms which were programmable and re-programmable but they were also expensive and problematic.
So the main solution to have any programming on the chip was to actually etch it permanently. That's why we can read it today.
I love Travis’ work. Had the pleasure of meeting him last year in Stockholm. Not only does he have fascinating and engaging talks he’s super cool and down to earth.
Wow that's amazing - he actually created almost an entire gameboy just to "capture" video signal from gameboy.
Its astonishing and terrifying at the same time. And rises some interesting philosophical questions (if he managed to create perfect emulation is this really video capture from the point of view of user or something wholly different)
https://github.com/svendahlstrand/game-boy-lcd-sniffing
https://there.oughta.be/a/game-boy-capture-cartridge
https://there.oughta.be/a/game-boy-capture-cartridge
https://news.ycombinator.com/item?id=34069305
I wonder if these same signals can be used to make an adapter to connect an external screen.
The ROM itself is 256 bytes, and has been previously extracted using a similar technique. The last thing it does on boot (before moving on to the cartridge’s entry point, which is adjacent) is remove itself from the system’s address space, so special techniques like this are needed to extract it (can’t just do it from normal Game Boy code).
Actually, it was originally extracted via clock glitching to cause the CPU to skip the instruction that unmaps the bios
So the main solution to have any programming on the chip was to actually etch it permanently. That's why we can read it today.