Songbird recently asked pixel artist anderlex if he could provide a new background for the upcoming Lynx game Microvaders. Lo and behold, just a couple hours later he had a mockup ready with a full-screen starfield, improved palette, and sprite enhancements. Thus I knew I had to get busy incorporating those graphics right away to show the engine could do it!
Microvaders is another game I’m hacking without any source code; the original alpha of this game is actually a playable (but extremely tough!) secret game within Lexis. You can read about some previous ROM raiding exploits if you want to learn how I work on a game without the source. Suffice to say, it takes a lot of patience and disassembly and putting on your detective hat to piece together why fragments of code behave the way they do.
Still reading? OK, how about a little bit of techie trivia related to how I managed to incorporate the new look? The original code actually drew two large sprites to cover the screen. The first was the blue rectangle in the middle. Rather than being a single pixel scaled to cover the rectangle, it’s actually a packed 596 byte sprite. The second is the full-screen “page background” which, due to the high number of randomly distributed grayscale pixels, is a packed 3847 bytes. The interesting bit here is that the page background actually uses the transparency setting for the blue rectangle, which allows the engine to layer the sprites thusly:
- Draw the blue rectangle to “wipe” the viewable playfield
- Draw all the game sprites (ships, shots, explosions, etc.)
- Draw the page background as a border without erasing the viewable playfield
To utilize the new starfield background, I actually want to turn the entire screen into the viewable playfield. That means I can completely obliterate the sprite data for the blue rectangle, and switch that first sprite draw to redraw the entire screen. Then I can skip drawing the page background as the last step, and use that sprite data buffer for anything I want.
The new starfield background is only 2251 bytes, so it fits nicely with room to spare in the page background. And I’m putting the new sprite frames for the player ship and the big invader into the blue rectangle buffer and still have a few hundred bytes remaining there. This does have the unfortunate side effect of leaving some fragmented RAM where the original big invader and player frames are located, so I’ll have to keep those in mind if I have some tiny sprites and run out of room elsewhere.
Even though I could load new data from ROM if necessary, it’s really fun to see how many new graphics I can stuff into the single RAM load. Leave no byte untouched!
Microvaders is coming late 2022 from Songbird. Watch this space for more previews of how the game is progressing!