Live data from Hacker News

Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller

github.com

11–14 of 14 posts

Re: Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller

#11
Neat! I also did something very similar when I discovered PeanutGB( https://github.com/deltabeard/Peanut-GB ) for an university project.

I used an STM32F401 (the "blackpill" board). Shoved it into a gameboy case I got from aliexpress and connected an ILI9341 display, a PCB for the buttons I found online from some hobbist selling them and 4 AA batteries in series. The screen wasn't really the same as the gameboy's one in dimensions so it all looked very janky, but it was cool enough to impress people.

I had no audio, I was able to play simple GB games quite well but I had some significant slowdowns with stuff like Super Mario Land 2 or the later pokemon. I had 3 big problems: - First, I didn't use DMA at all. That's because I picked a display controller with 8 data GPIOs because at the time I thought "8 lines vs 1? its gonna be faster right?". Dumb me, I didn't consider that DMA existed... - Second, I wanted to scale the image to fit the entire screen. I couldn't fit the scaled framebuffer in memory though, so I had to keep the original size but send each pixel to the screen 4 times - Last, I read games from an SD-card. I had a tiny in-memory cache for recently read data blocks, but you could see when I got a cache miss. It wasn't often though so it wasn't bad at all.

I agree, it was an incredibly fun project

Re: Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller

#12

Neat! I also did something very similar when I discovered PeanutGB( https://github.com/deltabeard/Peanut-GB ) for an university project. I used an STM32F401 (the "blackpill" board). Shoved it into a gameboy case I got from aliexpress and connected an ILI9341 display, a PCB for the buttons I found online from some hobbist selling them and 4 AA batteries in series. The screen wasn't really the same as the gameboy's one…

Nice, and yeah, Peanut-GB does the heavy lifting. Would be also interesting to connect directly to original cartridges.

Re: Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller

#13
post #7

Public domain Tetris ROM to try it: https://github.com/tbsp/Adjustris https://github.com/tbsp/Adjustris/releases Another one, a platform game, GPLv3 licensed: https://github.com/mholtkamp/carazu https://github.com/mholtkamp/carazu/releases You need this to compile both ROMs: https://github.com/gbdev/rgbds

Thanks, great!

Re: Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller

#14

Neat! I also did something very similar when I discovered PeanutGB( https://github.com/deltabeard/Peanut-GB ) for an university project. I used an STM32F401 (the "blackpill" board). Shoved it into a gameboy case I got from aliexpress and connected an ILI9341 display, a PCB for the buttons I found online from some hobbist selling them and 4 AA batteries in series. The screen wasn't really the same as the gameboy's one…

I'm sure you know this, and perhaps it's way too late, but still: the STM32s can certainly use DMA to write to GPIO pins. See for instance [1] (not my project, just a random search hit that seemed nice).

[1]: https://github.com/mnemocron/STM32_PatternDriver

Post reply on HN