This is a port to the NES/Famicom of the renown jetpac game from Ashby Computers and Graphics Limited (trading as Ultimate Play the Game). You can find a ROM to play the game in the releases page. Read the CONTRIBUTING.md file if you want to make any changes, report an issue or make a suggestion.
The game is a shooter in which you have to re-assemble your ship's parts and fill it with fuel, all while killing enemies that keep popping up. In the game the controls are as follows:
| Button | Action |
|---|---|
| Start & Select | Pause/Resume the game |
| A & Arrow Up | Thrust |
| Arrow Left & Arrow Right | Fly or walk left/right |
| Arrow Down | Hover |
| B | Shoot |
Here it is a short recording of gameplay:
This port does not attempt to be a pristine replica of the original game. This is in line to what most ports felt during those times. That is, for a given game that was ported to multiple systems, you could always tell differences, and not just aesthetic ones.
Being more specific, this port follows the original version with some adjustments in order to make it a reality on the NES/Famicom, but I have not been shy either on making some changes from my own taste. Read more on these changes below.
The player is presented with a title screen which is a merge between the "Loading" and the title screens from the ZX Spectrum. On the NES/Famicom the concept of "loading" is quite foreign to players (unless your are on the Famicom Disk System, of course), but at the same time I wanted to re-use at least some of its elements on the otherwise quite blank title screen from the original. Hence, both screens have been merged into something that feels more like it belongs to the NES/Famicom library.
One of the cool aspects from the original is how colorful things are. I have tried to keep things the same way, but there are some considerations to be made.
First of all, colors are slightly different because of palette differences between the NES/Famicom and the ZX Spectrum. Thus, don't expect the same gradience of colors. More than that, some colors have been rearranged on purpose, like the red on the jetpac's fire, just because I felt it was nicer and it fit well with the overall coloring scheme.
The colors from bullets are also quite hard to pin down from the original. Hence, I've done something that looks colorful and which is within the palettes for this game. Couple this with what I mention below on shooting, and you will quickly realize that shooting is a different experience than the original version. Hopefully this is not too distracting for players which were used to the original aesthetics.
Finally, whenever the player fills the shuttle with fuel tanks, the original version displayed a small step of purple being filled in the shuttle. In the NES/Famicom world this is basically done via PPU attribute tables, which cannot be that precise. Hence, instead of doing it by purely vertical steps, you will notice that the shuttle changes color in a slightly different way than in the original. Also, note that the shuttle won't start blinking when full, as I find it distracting.
The player will feel floaty as with the original controls, but bear in mind that physics will be a bit different here and there. Collisions from the player to platforms will also feel kind of similar, even if, again, they are not an exact match to the original. In summary, I've tried to replicate the "spirit" of the controls, without being obsessed to make them an exact match with the original.
Lastly, note that if you walk close the a platform's edge the game won't force you down as with the original. I found that unnecessary and it made things more complex on the technical side, so I skipped implementing this behavior.
The sound is entirely different from the original, and it's the thing that will stand out the most to players used to the original "soundtrack". The ZX Spectrum was very limited in this department, with only a single-channel beeper, and so the only sound in the original are beeps making up the sound effects. These beeps are charming and all, but they are next to impossible to replicate on the NES/Famicom.
All in all, this port stays in the same beeper department, but via the more advanced channels from the NES/Famicom. Long story short: all sounds are just different on this port. Having said that, there are a couple of considerations to be made.
First of all, the take off animation is done via the noise channel from the NES/Famicom, which is close enough to the original sound. But this noise channel is also used for enemy/player explosions, which will sound entirely different to the beeping from the original. All in all, I thought it was funny to have it this way, which sounds more aggressive and it's charming in its own distinct way.
Moreover, in the original the CPU had to slot some time to produce the beeping, which made the game to lag in some situations. This doesn't happen on the NES/Famicom, simply because we don't have to waste (too many) CPU cycles to produce sound. When it comes to bullets, this lag made the beeping on the original unreliable. But if we delivered a sound effect for each bullet on the NES/Famicom, it would simply overwhelm the player, as they would get a fast stream of beeps. Because of this, I'm only delivering sound at a maximum capped frame rate for bullets. This will make the randomness of beeping from the original "less random" on this port.
Last but not least, and realizing that this shooting game isn't that far off from games like Gradius when it comes to being a bullet smasher, the sound effect for each bullet is closer to those kinds of games in contrast to the original. In the end: different machine, different sound effects.
Shooting is something that is completely different to the original, as the NES/Famicom presents a sprite limit per scanline which is quite daunting for a shooter. I also envisioned doing nasty things on background tiles, but that is hard to do and probably not worth it. In the end: different machine, different rules. Hence, bullets are handled in a similar way as other games for the NES/Famicom, even if it's not particularly close to the original.
The amount of points gained on each event is basically as in the original (note that some remakes re-arranged some of these things). But other than that, note that shuttle parts and fuel tanks are only accounted when you drop them, not when they are grabbed. This is different to the original game, but it made things more simple on the technical side, and I actually believe it makes more sense.
As an homage to Donkey Kong 64, you can collect a coin after completing 16 stages. This coin features a chameleon as a reference to SUSE, since I originally bootstrapped this project during Hackweek 23.
This game is designed for the NROM cartridge board. Specifically, the 32K on PRG ROM capacity, and 8K on CHR ROM capacity. This is the most basic cartridge board available, and it was more than enough for this simple game. In fact, despite being completely careless on ROM space, I only ended up filling ~30% of it for this basic configuration (check the exact numbers in the CHANGELOG.md file).
Moreover, this is a game that doesn't do any scrolling. Thus, I could've picked up any kind of mirroring for it, but here I'm using the horizontal one.
Last but not least, the build system produces both an NTSC and a PAL version of the game. Coming from PAL territory myself, I've made an effort so the PAL version doesn't feel slower in any way than the NTSC one. If that's not the case for you, report an issue.
The original game was developed and published by Ashby Computers and Graphics Limited (trading as Ultimate Play the Game), and released for the ZX Spectrum and VIC-20 in 1983 and the BBC Micro in 1984. Thus, the original idea is not mine, and I only did the porting to the NES/Famicom platform. Similarly, all the assets and the cover image are just sloppy ports that I did from the original game. Thus, all credits for the original idea and artistic choices are entirely on the original authors, not me.
This port is released under the GPLv3+, Copyright (C) 2023-Ω Miquel Sabaté Solà.
