Finally released: The GB Interceptor.

An open source rp2040-based adapter that goes between your (unmodified) Game Boy and the game cartridge to record or stream your gameplay via USB.

Video: https://youtu.be/6mOJtrFnawk
Details: https://there.oughta.be/a/game-boy-capture-cartridge

A Game Boy capture cartridge: The GB Interceptor

YouTube
@DiConX @razor big fan of how i think anyones first thought would be „wait, how does that even work, they can‘t possibly just have an emulator in lockstep“ and actually that is exactly what’s happening
@halcy @DiConX jup very satisfying to see that this really works so well 🙂
@halcy @razor
Damn, I wish I had thought of the term "lockstep" when describing how it works...
@DiConX this is so cool, thanks for making it
@DiConX I need to jump on the "I can't believe this actually works" bandwagon. Very well done.
@DiConX This is great! @NeoNacho sent me your post!
@DiConX it's a pleasure to simply watch this things, really...

@DiConX

That is pretty sweet.

Good work.

@DiConX this is a wonderful and fun idea! so glad to have something like this for the GB folks out there looking for modless solutions!!
@BilliardLentil i am going to stream making chiptunes and games 24/7 now.

@DiConX very nice!

If the rp2040 was setup as a MITM instead of a passive sniffer, you might be able to read out the DIV register by spoofing some instructions before returning to the normal game code? but that probably also violates the idea of "running unmodified code."

Could the link cable issue for 2 player tetris in theory be solved by also sniffing the link cable? (barring performance constraints, which you're already having issues with)

@kitlith
Yes, it was important to me that the cartridge is still directly connected to the Game Boy, but code injection might be another very rewarding project.

I think that sniffing the link cable would not be that bad in terms of performance as the link cable is very slow and the rp2040 can just capture everything with a PIO and put it in a FIFO, so the CPU would just pick up the data when it would virtually read that register. But on the hardware side it would be quite a contraption.

@DiConX This is absolutely ridiculous. I love it.
@DiConX This is incredible. Need it now
@DiConX now can you make one for the Sega Game Gear?
@SapphicLawyer No idea, never had a Game Gear and don't know much about it. Since I am already at the limit of the rp2040 the slightly better specs of the GG might require a faster micro processor (or FPGA). Whether the principle works here also depends on how much the Game Gear reveals on the memory bus. For example, it is very useful that the Game Boy sets the address pins of the cartridge to the current program counter even when it is executing code from RAM.
@DiConX Very cool! Great work :)
@DiConX Filed under things I didn't know I wanted until someone invented it. 👏👏👏
@DiConX
I'm very curious about how this works on a technical level. I wouldn't expect the gameboy to be sending its screen frame-buffer to the cartridge or vice-versa. How is video output data available to the cartridge pins?
@humbird0 Since the Game Boy runs its code directly from the cartridge, the Interceptor can follow the same instructions and recreate the VRAM content. A emulated graphic unit then renders the image. (The links in the post provide much more detailed explanations.)
@DiConX
Parallel emulation?!
That's freakin' nuts! Of course that would be possible now.