space-invaders-arcade-emulator
v0.1.2
Published
Space Invaders Arcade Emulator
Downloads
6
Maintainers
Readme
space-invaders-arcade-emulator
Description
Space Invaders arcade game emulator written in Rust for the web.
Complete Emulator of the Intel 8080, the app is implemented to run the Space Invaders Arcade game.
🚀🚀You can try it online from your browser 🚀🚀
The demo source code is available here 🚀🚀
The game is implemented with all the 10 sounds of the original game and can be played in black and white or in color ( SV), normal screen mode (TV) or in colored mode (CV).
🚀🚀 The package is available on npm 🚀🚀
Images
Without background
| SV version | TV version | CV version | |:---------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| | | | |
Using background 1
| SV version | TV version | CV version | |-------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------| | | | |
Using background 2
| SV version | TV version | CV version | |----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------| | | | |
Videos
https://user-images.githubusercontent.com/59691442/183045566-0a3df947-06e7-4c46-9fc6-9d2b8f7d9a46.mp4
Controls
You can use the keyboard to play the game.
| Arcade buttons | Emulator/Keyboard | |----------------|-------------------| | Insert coin | C | | P1 start | Space | | P1 shoot | ↑ | | P1 ← | ← | | P1 → | → | | P2 start | G | | P2 shoot | E | | P2 ← | S | | P2 → | F |
The original game is mapped with some inputs that allow the constructor to choose the difficulty. This allows you to increase the numer of lives and change the extra ship necessity points. To change those settings check the checkboxes before starting the game.
GitHub Actions
The project is set with a set of different scripts:
- Rust : Build the project in native mode and run the unit tests.
- rust-clippy analyze : Evaluate the code quality (error, warnings, etc...).
- rustfmt check : Check the code good formatting
- Wasm CI : Build the project in wasm mode.
- Wasm NPM Publish : Build the project in wasm mode and publish it on npm.
Documentation
emulator101:
http://www.emulator101.com
Computer Archeology:
https://www.computerarcheology.com/Arcade/SpaceInvaders/Hardware.html
Emudev.de:
https://emudev.de/q00-si/a-short-fun-project/
Rust:
https://doc.rust-lang.org/book
SDL2 Rust:
https://github.com/Rust-SDL2/rust-sdl2
SDL2 libs download:
https://www.libsdl.org/download-2.0.php
https://github.com/libsdl-org/SDL_mixer/releases
rust-clippy:
https://github.com/rust-lang/rust-clippy
rustfmt:
https://github.com/rust-lang/rustfmt
Intel 8080 documentations:
https://archive.org/details/8080Datasheet
https://altairclone.com/downloads/manuals/8080%20Programmers%20Manual.pdf
http://bitsavers.org/components/intel/MCS80/9800301D_8080_8085_Assembly_Language_Programming_Manual_May81.pdf
Intel 8080 opcodes table:
https://www.pastraiser.com/cpu/i8080/i8080_opcodes.html
Wikipedia:
https://en.wikipedia.org/wiki/Intel_8080
Test Roms for the Intel 8080:
https://github.com/superzazu/8080/
https://altairclone.com/downloads/cpu_tests/
http://www.emulator101.com/full-8080-emulation.html
Space Invaders Audio files:
https://samples.mameworld.info
https://www.classicgaming.cc/classics/space-invaders/sounds
Mozzila Rust to WebAssembly:
https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm
wasm-bindgen:
https://rustwasm.github.io/docs/wasm-bindgen/
js-sys:
https://docs.rs/js-sys/latest/js_sys/
web-sys:
https://docs.rs/web-sys/latest/web_sys/
trcf.net:
https://tcrf.net/Space_Invaders_(Arcade)
tobiasvl.github.io:
https://tobiasvl.github.io/blog/space-invaders/
trcf.net:
https://tcrf.net/Space_Invaders_(Arcade)
eab.abime.net:
https://eab.abime.net/showthread.php?t=105132&page=2
ArcadeArtwork:
https://www.arcadeartwork.org/index.php?%2Fcategory%2F57
codepen.io:
https://codepen.io/DanielWeiner/pen/naybVd
Contributors
Quentin MOREL :
- @Im-Rises
- https://github.com/Im-Rises