Sega Game Gear Player for Sega 32X

Hello friends - this is my first post! My name is Shawn and I am a failed indie game dev turned Sega homebrew developer 🙂

I wanted to get away from the hustle culture of trying to sell games on Steam (It just made me feel like crap!) so I turned to just playing around on old Sega consoles (They do not make me feel like crap!)

Unfortunately, my first project for the Sega 32X turned out to be another failure:

https://www.youtube.com/watch?v=6zlwqRxgb4Y

32X Game Gear Player on github
*edit note: it would help if I made this public! should be good now!

This is kind of a port of MEKA's Game Gear functionality to the Sega 32X. I tried my best but came to the conclusion that the Sega 32X just isn't capable of full speed Game Gear emulation. The 4kb of shared CPU cache was the bottleneck.

I am very grateful for the retro game community for all of the good times through the years and wanted to give something back. Sorry it didn't turn out so great, but maybe someone smarter than me can make it work.

Thank you and God bless! Shout out to ChillyWilly, your samples and devkit really helped get me started. Hopefully more to come soon.
 
Last edited:
Are you utilizing the Genesis hardware as well? The game gear is just a glorified master system and the genesis can already handle master system with a passthrough adapter.
 
Are you utilizing the Genesis hardware as well? The game gear is just a glorified master system and the genesis can already handle master system with a passthrough adapter.

I am utilizing the Sega Genesis for audio playback as the sound chip is absolutely compatible, but unfortunately when the Sega 32X is attached the Z80 processor is actually put into an isolated state - this is why you cannot play Master System games (even with the adapter) on the Sega 32X.

Game Gear emulation was the goal because it could actually output 4,096 colors making any sort of Game Gear player on native Genesis hardware impossible. The 32X can display enough colors but since it disables the SMS CPU I attempted to just emulate it using the dual Hitachi SH2s in the 32X. Unfortunately, they were not fast enough.
 
I am utilizing the Sega Genesis for audio playback as the sound chip is absolutely compatible, but unfortunately when the Sega 32X is attached the Z80 processor is actually put into an isolated state - this is why you cannot play Master System games (even with the adapter) on the Sega 32X.

Game Gear emulation was the goal because it could actually output 4,096 colors making any sort of Game Gear player on native Genesis hardware impossible. The 32X can display enough colors but since it disables the SMS CPU I attempted to just emulate it using the dual Hitachi SH2s in the 32X. Unfortunately, they were not fast enough.
you can't play master system games because the 32x interrupts a few of the address lines needed to turn the genesis into the master system mode, you should still be able to use the z80 though.
 
From my research notes:

  • The memory map is different. Game Gear software expects ROM at $0000-$BFFF, but on the Genesis Z80 that space is not cartridge ROM. It is mostly Z80 RAM, YM2612/MMIO, and a banked 68K window. So the GG code cannot execute there.
  • The I/O is not trappable. GG games constantly use Z80 IN/OUT instructions to talk to VDP, PSG, controllers, and mapper hardware. On real Genesis hardware, those I/O cycles are not visible to the SH-2 side, so the emulator cannot intercept them.
  • The interrupt and bus control model is different. GG timing depends on its own VDP/IRQ behavior; the Genesis Z80 is wired into the Genesis system instead.
  • Any workaround requires constant bus arbitration, copying, or code patching, which is slow enough that it defeats the point of using the real Z80 in the first place.


Now is a good time to point out that I am not the smartest person and this is my first time even trying to make an emulator and this is my first piece of software ever written for a retro console. It is very possible (and very likely!) that I am wrong and my code is just really bad 🙂
 
Back
Top