A Space Invaders emulator, written in C using the SDL2 and SDL mixer libraries.
invemu.mp4
- Full Intel 8080 implementation, complete with cycle counting.
- Colour & sound.
- 2 player mode.
Input | Effect |
---|---|
c | Insert coin |
ENTER | Play single player game |
2 | Play two player game |
t | Tilt (causes a game over) |
Left/Right arrow keys | Move left/right (works for both player 1 & 2) |
SPACE | Fire |
Upon loading the emulator, insert coins using the c key, then press either ENTER or 2, depending on if you want a single player or two player game. Once the game has started, use the arrow keys to move and the space bar to shoot.
If you're on 64-bit Windows, download the zip archive on the releases page. Create a folder in your preferred directory, and unzip the zip archive inside said folder. Put your game ROMs in the ROM folder, and sounds in the Sounds folder if you want sound. Run invemu.exe. Alternatively, you can follow the build instructions and create the .exe yourself.
If you're on another platform, you will need to build the project yourself. I'm on Windows so was not able to create an .exe file for other platforms.
If you want to build the project (i.e to generate an .exe yourself), you will need to have the following installed:
- A C compiler, such as GCC.
- SDL2
- SDL Mixer
I used the following for my build:
WinLibs GCC version 13.2.0, with POSIX threads, with LLVM/Clang/LLD/LLDB.
SDL 2.30.3 MinGW
SDL mixer 2.8.0 MinGW
While I created this emulator with learning as my main goal and consider it "done", no project is ever truly finished. The emulator could perhaps be improved with the following, for anyone who may wish to make improvements:
- Game volume control
- Full screen mode/Window resizing
- Controller support
- Saving high scores
The processor emulation passes the following CPU tests:
cpudiag
TST8080
CPUTEST
8080PRE
8080EXM/8080EXER
I'd like to thank the following individuals/groups, without which this emulator would not have been possible:
Emulator101 For providing an excellent start to writing the emulator.
superzazu's Intel 8080 implementation, which was an immensely useful for output comparison when trying to fix my auxiliary carry.
The emudev discord server and subreddit, for providing many resources as well as helping me with a few questions.
Computer Archeology for detailed documentation on the game and its hardware.
Taito for creating such an amazing game.
You for playing!