4 ms·
GBA is probably the last device made that acts like an old classic console like the NES. It hardware-accelerates tiles and sprites, which are loaded from memory
by Torgo 11y ago
GBA is probably the last device made that acts like an old classic console like the NES. It hardware-accelerates tiles and sprites, which are loaded from memory-mapped locations that you set (typically) with structs made in C. You can tweak x-y orientation through bitmaps, etc and scroll the tilemap around the screen by setting the values in memory-mapped registers.
Since there's only a fixed number of sprites the hardware acceleration can reference from memory to display on screen, it was really an eye-opener to debug commercial games and see how they worked around these limitations. In Wario Land, the Wario character onscreen had tons of animations, which would seem to break this limitation. By debugging the game, I was able to find the way they did it was by setting aside just a few sprite slots for Wario, loading all his animations into a different segment of RAM, then DMA'ing the frames into his sprite slot on a timer to do the animation.
Also, even though it's an LCD screen, the hardware simulated a CRT vertical and horizontal blank. I guess this was because this is the paradigm that console game-programmers were used to, as you'd do your game logic there between animation frames.
- ginko 11y agoThe video processor in the Nintendo DS works pretty much the same way, only adding a scanline based polygon rasterizer to the mix.
- TD-Linux 11y ago>Also, even though it's an LCD screen, the hardware simulated a CRT vertical and horizontal blank. It's not a simulation, the LCD is actually serially refreshed in the same scan order as a CRT.