This is a port to the NES/Famicom of the renown [jetpac](https://en.wikipedia.org/wiki/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](https://github.com/mssola/jetpac.nes/releases). Read the [CONTRIBUTING.md](./CONTRIBUTING.md) file if you want to make any changes, report an issue or make a suggestion. # The game 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 | # Changes from the original This port does not even attempt to be an exact 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. ## Merging the "loading" and the "title" screens 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](https://en.wikipedia.org/wiki/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. ## Colors 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 to 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](https://www.nesdev.org/wiki/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. ## Controls 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. ## Shooting 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. ## Scores 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. ## SUSE coin As an homage to [Donkey Kong 64](https://donkeykong.fandom.com/wiki/Jetpac), 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](https://hackweek.opensuse.org/projects/port-the-jetpac-game-to-the-nes). # Technical thingies This game is designed for the [NROM](https://www.nesdev.org/wiki/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](./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](https://github.com/mssola/jetpac.nes/issues). # License 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+](http://www.gnu.org/licenses/gpl-3.0.txt), Copyright (C) 2023-Ω Miquel Sabaté Solà.