The forces of Zevious have arrived: a sudden appearance of crop circles carved into the grasslands, the reactivation of ancient pyramids, and an overwhelming number of terrifying hostilities.
The United Earth Defence Force has appointed you to enact 'Plan Seven'. Piloting an advanced, uninsured fighter, you are humanity's last line of defence. Your (not at all) suicide mission: navigate occupied territory, outmanoeuvre Zevian forces, and break through to victory.
Zevious is a pure SHMUP vertical arcade shooter. You must navigate a continuously scrolling landscape while managing incoming enemy fire and taking down alien targets.
To survive the onslaught, your ship is equipped with dual power cannons and high energy shielding. Taking hits from enemies or crashing into hostile craft will drain your power reserves, though your shields will slowly regenerate if you can manage to stay out of the line of fire long enough.
A word of warning: trigger discipline is essential! Your ship's cannons are prone to overheating. If you hold down the fire button for too long, your blasters will jam. You will need to release the trigger and let the systems cool before you can return fire, leaving you vulnerable to counterattacks.
 |
| Zevious Seven: Must knock out those pyramids. |
A Little bit on the Making of Zevious Seven
Zevious is the kind of game I always thought should have been possible on a ZX81, yet somehow never got. After all, if the Apple II could have an official Xevious port, then the much more capable ZX81 really should have had its own clone. Well, now it does. Of course, creating a smooth, vertical scroller that fits into a mere 16K was a gruelling and slightly sanity-loosening experience.
A decent SHMUP demands a serious turn of speed. To hit those targets, the game employs double-buffering into multiple shadow DFILEs. This allowed for the loading of tiles directly into a pre-calculated shadow buffer, which is then alternated between DFILEs and layered with sprite data before being swapped into the active display. To prevent screen tearing, refreshes are strictly locked to the vertical frame rate. This is where we start noticing the difference between PAL and NTSC refresh rates; due to its unique architectural quirks, the PAL ZX81 is one of the few machines that actually operates faster in its native PAL mode.
There are two distinct tile sets: one for sprites and one for landscape elements. Landscapes are held in a 4x3 set; these are loaded every three cycles and scrolled down the screen every cycle. The sprites are managed in 3x6 sets, with half of each sprite being processed per cycle to handle the animations.
The fight between memory management and speed was a constant, uphill battle. Originally, all sprites and tiles were stored in a compressed format to save space, but this required too much processing power to keep the game running at an acceptable rate. While the concept tested well in isolation, once the surrounding game logic was implemented, the speed penalty became too much of an overhead. In the end, I opted to keep compression for the level data only.
The AY music and sound effects are functional, though admittedly on the basic side; space and timing constraints forced me to work within fairly tight limits. Sound effects are pre-configured, using a single-bit change for each effect, plus a further bit to re-trigger the AY chip on demand. The playback routine is similarly lean, we're not going to win any awards for sound design on this one!
Between these behind-the-scenes tricks and some tight collision detection, Zevious turned out surprisingly fast, at least by ZX81 standards.
Much thanks goes to Tynemouth Software, The Loud Scots Bloke and George Beckett for providing feedback, testing and ideas.
I’m very happy with how responsive it feels, and I hope you have as much fun defending the skies as I had building them!