Ahhhh! The GameBoy Advance. What a wonderful machine. So light! So refreshing! So versatile!
Another Atari VCS 2600 emulator for the new Nintendo GameBoy Advance.
I’ve been tinkering with this for well over 8 months and it’s now at a stage where I’m prepared to show it off.
The emulator is written in pure assembly language, the main emulator core is completely coded in Thumb and runs from ROM. The CPU emulation is a combination static recompiler & interpretive core — for those pesky VCS games that run parts of their code out of RAM — and is coded in ARM assembly running from the internal WRAM of the GBA.
Frame rate is a respectable 39fps, and a little more optimisation will get that to a nice 60fps. There is no sound emulation yet, and I’ve only implemented digital joysticks and not all ROM bank switching schemes are in place so only 2KB, 4KB and some 8KB games actually run.
One thing I must shamefully admit is that it currently doesn’t run on the real hardware, only under the VGBA emulator. I have yet to figure out what I’m doing wrong though I suspect it’s something very obvious.
The emulator can render the game in three modes currently, and I’m thinking of adding a 4th.
In ” tall mode” you have to rotate the GBA ninety degrees counter-clockwise and that gives you a nice tall screen that renders out almost all VCS games correctly — though obviously only 160 pixels wide. The actual pixel clock resolution of the Atari 2600 was only 160 pixels anyway so no information is really lost. The other two modes render at the correct orientation but drop pixels or add scan lines as appropriate. As the objects move around on screen they seem to squash/stretch slightly with very noticeable pixellation that I’m not happy with. I’m thinking about how to get a cheesey pixel filtering system implemented that would smooth out this problem by anti-aliasing across two or more pixels. I’m still thinking about that. I’d rather have a fast emulator with imperfect graphics than a pixel perfect emulator that only runs at 30% of the correct speed.
Stay posted for more updates.
Notice that these pictures were taken with the PrtScn button on my keyboard and they still look bad. I really do suck at all forms of photography even if it is only performing a screen capture.
Somebody stop me before I emulate again!!
The original Atari Asteroids.
Activision’s Pitfall in landscape mode stretched to fill the screen.
Activision’s Pitfall in landscape mode.
— Justin Lloyd