Moar progress, Metroids, and Pokemans!
![[Image: i0sXTZRhfFVIZ.png]](http://i7.minus.com/i0sXTZRhfFVIZ.png)
![[Image: ivo27Yxk5jwzL.png]](http://i4.minus.com/ivo27Yxk5jwzL.png)
In the past two days, I've finally gotten 4 of the most troublesome games in my test set to finally boot: Metroid Fusion, Metroid Zero Mission, Pokemon Sapphire, and Pokemon Emerald. I got the Metroid games working by chance, actually. I was trying to fix the Pokemon games, but ended up making these boot and run great (again aside from graphical glitches due to incomplete LCD emulation). Serendipity is awesome. Turns out the Metroid games rely on returning specific values when reading from certain DMA registers (for DMA channels 1 and 2 specifically for sound). I'd only done DMAs 0 and 3 because those are generally used for data transfers. Sound is still unemulated, so I thought I could ignore anything sound related (true for the most part) but there's always a special case.
Thought the Pokemon games needed GPIO emulation to work (not true, but the in-game clock won't work without it, but that's minor). To boot, they need minimal FLASH ROM emulation (and I do mean minimal). The only thing that needed to be implemented (for me at least) was putting the correct FLASH manufacturer ID and device ID at two bytes in memory. Good weekend if I must say so myself.
![[Image: i0sXTZRhfFVIZ.png]](http://i7.minus.com/i0sXTZRhfFVIZ.png)
![[Image: ivo27Yxk5jwzL.png]](http://i4.minus.com/ivo27Yxk5jwzL.png)
In the past two days, I've finally gotten 4 of the most troublesome games in my test set to finally boot: Metroid Fusion, Metroid Zero Mission, Pokemon Sapphire, and Pokemon Emerald. I got the Metroid games working by chance, actually. I was trying to fix the Pokemon games, but ended up making these boot and run great (again aside from graphical glitches due to incomplete LCD emulation). Serendipity is awesome. Turns out the Metroid games rely on returning specific values when reading from certain DMA registers (for DMA channels 1 and 2 specifically for sound). I'd only done DMAs 0 and 3 because those are generally used for data transfers. Sound is still unemulated, so I thought I could ignore anything sound related (true for the most part) but there's always a special case.
Thought the Pokemon games needed GPIO emulation to work (not true, but the in-game clock won't work without it, but that's minor). To boot, they need minimal FLASH ROM emulation (and I do mean minimal). The only thing that needed to be implemented (for me at least) was putting the correct FLASH manufacturer ID and device ID at two bytes in memory. Good weekend if I must say so myself.
