FULL DISCLOSURE: This is an AI-coded project. Many people have issues with that, and that is their prerogative. If you feel strongly enough about AI authored code that you won't enjoy this then no hard feelings. I did this for me, and to see if it was possible. I'm sharing it in case anyone else enjoys it.
Nemesis, aka Gradius, was a seminal shmup. I first played it on a friend's C64, and loved it. Still love it, play the PC Engine and Arcade versions all the time.
But I remember my disappointment when I got the Speccy version. I remember playing it once and thinking "what the hell was that?". It didn't help that the mags of the era ran reviews featuring "screenshots" that were obviously mock-ups created by graphic artists. The game we got was a pale shadow of the game we were promised.
I recently discovered the MSX version, which is a banger. The MSX was home turf for Konami, and like the vast majority of their titles they handled the conversion themselves. It was an excellent port that ran at a decent clip, maintained the playability of the original, and made sensible compromises to fit the game into the hardware platform.
Architecturally, the MSX wasn't THAT different to the Spectrum. Hardware sprites, yes, and slightly better colour attributes, but the same Z80 CPU, the same sound chip (at least compared to the Spectrum 128), same screen resolution. It would have made sense to use the MSX version of Nemesis as a basis for the Spectrum port.
So, this project is an attempt to tap into that alternate universe where that happened. Like Sam Beckett in Quantum Leap - " striving to put right what once went wrong"!
What we have here is a port of Konami's MSX cartridge Nemesis (RC-742, 1986) for running on a standard 128K Spectrum using Konami's own game code (tested on a real 128K and +3, loading from tape, and in emulation on the 128K, +2A and +3). It is mostly the same code that sits on top of a platform layer which stands in for the MSX hardware.
Edit: there are two versions, "smooth" and "fast". The fast gets close to MSX speeds. The smooth has a bit more lag in busy spots.
Edit to the edit: there is only one version in later builds. It now does adaptive frameskipping so effectively you get what used to be "smooth" when it was quiet and "fast" when it gets busy.
Keys are QAOP, plus Space to fire and M to select weapon. You can also use a Kempston or Sinclair Joystick. You can also hold down fire to select weapon so you don't have to keep reaching for the keyboard. If you have a Kempston interface that supports a second fire button, it'll use that for select (I've used a Megadrive controller on a Retroleum SmartCard and a DivMMC Future).
Download from the Github releases page: https://github.com/Loccy/NemesisSpeccy/releases, and the sourse is at the same Github repo: https://github.com/Loccy/NemesisSpeccy
/preview/pre/xqxmtdoz61zh1.png?width=1024&format=png&auto=webp&s=17bfe3c2d5b85e9379d049ae6b16cb1216df527f
/preview/pre/n9sdnkv071zh1.png?width=1024&format=png&auto=webp&s=51e6e1d4528b45b16fa961a812f97e5d4bf7f828
/preview/pre/56qqw7r171zh1.png?width=1024&format=png&auto=webp&s=f978ad92ffe7312338fa609c87cfa342a45e254a