Skip to content

Im-Rises/space-invaders-arcade-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

space-invaders-arcade-emulator

rustLogo javascriptLogo reactLogo scssLogo cssLogo

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
NOBG_BW NOBG_Color NOBG_Geeen

Using background 1

SV version TV version CV version
BG2_Green BG2_BW BG2_Color

Using background 2

SV version TV version CV version
BG1_BW BG1_Green BG1_Color

Videos

space_invaders-video.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

rust rust-clippy analyze rustfmt check Wasm CI Wasm NPM Publish

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 :

GitHub contributors