Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/im-rises/space-invaders-arcade-emulator

Space Invaders Arcade Game Emulator made in Rust 🦀 ported to WebAssembly WebGL and WebAudio
https://github.com/im-rises/space-invaders-arcade-emulator

arcade-game emulator game npm package rust webassembly webgl website

Last synced: about 2 months ago
JSON representation

Space Invaders Arcade Game Emulator made in Rust 🦀 ported to WebAssembly WebGL and WebAudio

Awesome Lists containing this project

README

        

# 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](https://im-rises.github.io/space-invaders-arcade-emulator-website/) 🚀🚀

The demo source code is available [here](https://github.com/Im-Rises/space-invaders-arcade-emulator-website) 🚀🚀

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](https://www.npmjs.com/package/space-invaders-arcade-emulator) 🚀🚀

## Images

### Without background

| SV version | TV version | CV version |
|:---------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|
| ![NOBG_BW](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/96276b2a-d75c-4eef-ae76-74624960ba19) | ![NOBG_Color](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/32bc3e25-7883-4229-bab3-7bbfae745e9e) | ![NOBG_Geeen](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/4ec1df0d-98e5-4327-b25c-da80e6a44470) |

### Using background 1

| SV version | TV version | CV version |
|-------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| ![BG2_Green](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/433a9da2-cdb8-48f8-85b8-9e615766bdf9) | ![BG2_BW](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/7a5c9618-9fd6-48a5-81eb-81d5964aa98e) | ![BG2_Color](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/39adf0b0-2fe9-488d-a10f-b390c4c1141a) |

### Using background 2

| SV version | TV version | CV version |
|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| ![BG1_BW](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/d0a903f4-b92f-48a2-b4d2-f4173be2ce3d) | ![BG1_Green](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/7a31f2f5-38ba-4881-894c-bfacc2faf659) | ![BG1_Color](https://github.com/Im-Rises/space-invaders-arcade-emulator/assets/59691442/563ab206-1382-4311-b0b5-76d34b41a0aa) |

## 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

[![rust](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rust.yml)
[![rust-clippy analyze](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rust-clippy.yml/badge.svg?branch=main)](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rust-clippy.yml)
[![rustfmt check](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rustfmt.yml/badge.svg?branch=main)](https://github.com/Im-Rises/space_invaders_arcade_emulator/actions/workflows/rustfmt.yml)
[![Wasm CI](https://github.com/Im-Rises/space-invaders-arcade-emulator/actions/workflows/wasm.yml/badge.svg)](https://github.com/Im-Rises/space-invaders-arcade-emulator/actions/workflows/wasm.yml)
[![Wasm NPM Publish](https://github.com/Im-Rises/space-invaders-arcade-emulator/actions/workflows/wasm-npm-publish.yml/badge.svg)](https://github.com/Im-Rises/space-invaders-arcade-emulator/actions/workflows/wasm-npm-publish.yml)

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:

Computer Archeology:

Emudev.de:

Rust:

SDL2 Rust:

SDL2 libs download:

rust-clippy:

rustfmt:

Intel 8080 documentations:

Intel 8080 opcodes table:

Wikipedia:

Test Roms for the Intel 8080:

Space Invaders Audio files:

Mozzila Rust to WebAssembly:

wasm-bindgen:

js-sys:

web-sys:

trcf.net:

tobiasvl.github.io:

trcf.net:

eab.abime.net:

ArcadeArtwork:

codepen.io:

## Contributors

Quentin MOREL :

- @Im-Rises
-

[![GitHub contributors](https://contrib.rocks/image?repo=Im-Rises/GameBoyEmulator)](https://github.com/Im-Rises/GameBoyEmulator/graphs/contributors)