{"id":16323596,"url":"https://github.com/im-rises/space-invaders-arcade-emulator","last_synced_at":"2026-04-29T17:01:30.906Z","repository":{"id":153766778,"uuid":"628455600","full_name":"Im-Rises/space-invaders-arcade-emulator","owner":"Im-Rises","description":"Space Invaders Arcade Game Emulator made in Rust 🦀 ported to WebAssembly WebGL and WebAudio","archived":false,"fork":false,"pushed_at":"2023-08-26T15:50:58.000Z","size":38859,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T08:56:31.632Z","etag":null,"topics":["arcade-game","emulator","game","npm","package","rust","webassembly","webgl","website"],"latest_commit_sha":null,"homepage":"https://im-rises.github.io/space-invaders-arcade-emulator-website/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Im-Rises.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-04-16T02:00:16.000Z","updated_at":"2023-08-26T03:13:11.000Z","dependencies_parsed_at":"2023-12-31T00:13:33.220Z","dependency_job_id":"f65b858f-e8b6-4a22-bc76-34967bb41200","html_url":"https://github.com/Im-Rises/space-invaders-arcade-emulator","commit_stats":null,"previous_names":["im-rises/space-invaders-arcade-emulator"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/Im-Rises/space-invaders-arcade-emulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fspace-invaders-arcade-emulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fspace-invaders-arcade-emulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fspace-invaders-arcade-emulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fspace-invaders-arcade-emulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Im-Rises","download_url":"https://codeload.github.com/Im-Rises/space-invaders-arcade-emulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Im-Rises%2Fspace-invaders-arcade-emulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32435122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arcade-game","emulator","game","npm","package","rust","webassembly","webgl","website"],"created_at":"2024-10-10T22:55:12.729Z","updated_at":"2026-04-29T17:01:30.889Z","avatar_url":"https://github.com/Im-Rises.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# space-invaders-arcade-emulator\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Rust-000000?style=for-the-badge\u0026logo=rust\u0026logoColor=white\" alt=\"rustLogo\" style=\"height:60px;\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/JavaScript-323330?style=for-the-badge\u0026logo=javascript\u0026logoColor=F7DF1E\" alt=\"javascriptLogo\" style=\"height:50px;\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\" alt=\"reactLogo\" style=\"height:50px;\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Sass-CC6699?style=for-the-badge\u0026logo=sass\u0026logoColor=white\" alt=\"scssLogo\" style=\"height:50px;\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/CSS-239120?\u0026style=for-the-badge\u0026logo=css3\u0026logoColor=white\" alt=\"cssLogo\" style=\"height:50px;\"\u003e\n\u003c/p\u003e\n\n## Description\n\nSpace Invaders arcade game emulator written in Rust for the web.\n\nComplete Emulator of the Intel 8080, the app is implemented to run the Space Invaders Arcade game.\n\n## 🚀🚀[You can try it online from your browser](https://im-rises.github.io/space-invaders-arcade-emulator-website/) 🚀🚀\n\nThe demo source code is available [here](https://github.com/Im-Rises/space-invaders-arcade-emulator-website) 🚀🚀\n\nThe game is implemented with all the 10 sounds of the original game and can be played in black and white or in color (\nSV), normal screen mode (TV) or in colored mode (CV).\n\n# 🚀🚀 [The package is available on npm](https://www.npmjs.com/package/space-invaders-arcade-emulator) 🚀🚀\n\n## Images\n\n### Without background\n\n|                                                         SV version                                                          |                                                           TV version                                                           |                                                           CV version                                                           |\n|:---------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|\n| ![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) |\n\n### Using background 1\n\n| SV version                                                                                                                    | TV version                                                                                                                 | CV version                                                                                                                    |\n|-------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|\n| ![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) |\n\n### Using background 2\n\n| SV version                                                                                                                 | TV version                                                                                                                    | CV version                                                                                                                    |\n|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|\n| ![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) |\n\n## Videos\n\nhttps://user-images.githubusercontent.com/59691442/183045566-0a3df947-06e7-4c46-9fc6-9d2b8f7d9a46.mp4\n\n## Controls\n\nYou can use the keyboard to play the game.\n\n| Arcade buttons | Emulator/Keyboard |\n|----------------|-------------------|\n| Insert coin    | C                 |\n| P1 start       | Space             |\n| P1 shoot       | ↑                 |\n| P1 ←           | ←                 |\n| P1 →           | →                 |\n| P2 start       | G                 |\n| P2 shoot       | E                 |\n| P2 ←           | S                 |\n| P2 →           | F                 |\n\nThe original game is mapped with some inputs that allow the constructor to choose the difficulty. This allows you to\nincrease the numer of lives and change the extra ship necessity points. To change those settings check the checkboxes\nbefore starting the game.\n\n## GitHub Actions\n\n[![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)\n[![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)\n[![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)\n[![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)\n[![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)\n\nThe project is set with a set of different scripts:\n\n- Rust : Build the project in native mode and run the unit tests.\n- rust-clippy analyze : Evaluate the code quality (error, warnings, etc...).\n- rustfmt check :  Check the code good formatting\n- Wasm CI : Build the project in wasm mode.\n- Wasm NPM Publish : Build the project in wasm mode and publish it on npm.\n\n## Documentation\n\nemulator101:  \n\u003chttp://www.emulator101.com\u003e\n\nComputer Archeology:  \n\u003chttps://www.computerarcheology.com/Arcade/SpaceInvaders/Hardware.html\u003e\n\nEmudev.de:  \n\u003chttps://emudev.de/q00-si/a-short-fun-project/\u003e\n\nRust:  \n\u003chttps://doc.rust-lang.org/book\u003e\n\nSDL2 Rust:  \n\u003chttps://github.com/Rust-SDL2/rust-sdl2\u003e\n\nSDL2 libs download:  \n\u003chttps://www.libsdl.org/download-2.0.php\u003e  \n\u003chttps://github.com/libsdl-org/SDL_mixer/releases\u003e\n\nrust-clippy:  \n\u003chttps://github.com/rust-lang/rust-clippy\u003e\n\nrustfmt:  \n\u003chttps://github.com/rust-lang/rustfmt\u003e\n\nIntel 8080 documentations:  \n\u003chttps://archive.org/details/8080Datasheet\u003e  \n\u003chttps://altairclone.com/downloads/manuals/8080%20Programmers%20Manual.pdf\u003e\n\u003chttp://bitsavers.org/components/intel/MCS80/9800301D_8080_8085_Assembly_Language_Programming_Manual_May81.pdf\u003e\n\nIntel 8080 opcodes table:  \n\u003chttps://www.pastraiser.com/cpu/i8080/i8080_opcodes.html\u003e\n\nWikipedia:  \n\u003chttps://en.wikipedia.org/wiki/Intel_8080\u003e\n\nTest Roms for the Intel 8080:  \n\u003chttps://github.com/superzazu/8080/\u003e  \n\u003chttps://altairclone.com/downloads/cpu_tests/\u003e  \n\u003chttp://www.emulator101.com/full-8080-emulation.html\u003e\n\nSpace Invaders Audio files:  \n\u003chttps://samples.mameworld.info\u003e  \n\u003chttps://www.classicgaming.cc/classics/space-invaders/sounds\u003e\n\nMozzila Rust to WebAssembly:  \n\u003chttps://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm\u003e\n\nwasm-bindgen:  \n\u003chttps://rustwasm.github.io/docs/wasm-bindgen/\u003e\n\njs-sys:  \n\u003chttps://docs.rs/js-sys/latest/js_sys/\u003e\n\nweb-sys:  \n\u003chttps://docs.rs/web-sys/latest/web_sys/\u003e\n\ntrcf.net:  \n\u003chttps://tcrf.net/Space_Invaders_(Arcade)\u003e\n\ntobiasvl.github.io:  \n\u003chttps://tobiasvl.github.io/blog/space-invaders/\u003e\n\ntrcf.net:  \n\u003chttps://tcrf.net/Space_Invaders_(Arcade)\u003e\n\neab.abime.net:  \n\u003chttps://eab.abime.net/showthread.php?t=105132\u0026page=2\u003e\n\nArcadeArtwork:  \n\u003chttps://www.arcadeartwork.org/index.php?%2Fcategory%2F57\u003e\n\ncodepen.io:  \n\u003chttps://codepen.io/DanielWeiner/pen/naybVd\u003e\n\n## Contributors\n\nQuentin MOREL :\n\n- @Im-Rises\n- \u003chttps://github.com/Im-Rises\u003e\n\n[![GitHub contributors](https://contrib.rocks/image?repo=Im-Rises/GameBoyEmulator)](https://github.com/Im-Rises/GameBoyEmulator/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fspace-invaders-arcade-emulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim-rises%2Fspace-invaders-arcade-emulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim-rises%2Fspace-invaders-arcade-emulator/lists"}