npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

space-invaders-arcade-emulator

v0.1.2

Published

Space Invaders Arcade Emulator

Downloads

6

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

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