{"id":13436781,"url":"https://github.com/rodrigorc/raze","last_synced_at":"2026-04-08T14:33:44.301Z","repository":{"id":45011630,"uuid":"180634201","full_name":"rodrigorc/raze","owner":"rodrigorc","description":"R.A.Z.E. A ZX Spectrum Emulator","archived":false,"fork":false,"pushed_at":"2025-03-18T20:15:14.000Z","size":1704,"stargazers_count":42,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T21:24:52.156Z","etag":null,"topics":["emulator","rust","wasm-bindgen","webassembly","zx-spectrum","zx-spectrum-emulator"],"latest_commit_sha":null,"homepage":null,"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/rodrigorc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.MIT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-10T17:48:47.000Z","updated_at":"2025-03-18T20:15:18.000Z","dependencies_parsed_at":"2024-04-05T00:33:10.495Z","dependency_job_id":"74ab8ea2-9945-4edf-a4eb-e522e6608362","html_url":"https://github.com/rodrigorc/raze","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigorc%2Fraze","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigorc%2Fraze/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigorc%2Fraze/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigorc%2Fraze/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodrigorc","download_url":"https://codeload.github.com/rodrigorc/raze/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244310557,"owners_count":20432565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["emulator","rust","wasm-bindgen","webassembly","zx-spectrum","zx-spectrum-emulator"],"created_at":"2024-07-31T03:00:52.065Z","updated_at":"2026-04-08T14:33:44.293Z","avatar_url":"https://github.com/rodrigorc.png","language":"Rust","funding_links":[],"categories":["Applications","应用","应用 Applications"],"sub_categories":["Emulators","仿真器","模拟器 Emulators"],"readme":"# R.A.Z.E. A ZX Spectrum emulator\r\n\r\nThis project is part of a friendly competition to build an emulator using Rust and WebAssembly.\r\n\r\nCheck the [live version here](https://rodrigorc.github.io/raze/).\r\n\r\n## About this project\r\n\r\nR.A.Z.E. stands for \"Rusty Attempt to a Z80 Emulator\", o something like that. It was build mainly to learn Rust, but then compiling to WebAssembly is just too easy not to do it.\r\n\r\n## Controls\r\n\r\nYou can use the keyboard mostly normally; SymbolShift is mapped to the right-control key and to the two Alt keys. The joystick emulation is mapped from the cursor keys for direction and left-control for fire. You can choose the type of joystick emulated in the drop-down menu `Cursor keys`.\r\n\r\nThere is also experimental support for gamepads: The gamepad will always emulate a Kempston joystick, great for multiplayer games. Remember that this is experimental, so your controller may or may not work. Patches are welcomed!\r\n\r\nIn the buttons below you can find the shortcut keys for some useful functions (such as F11 for fullscreen, etc.).\r\n\r\n## What can it do\r\n\r\nR.A.Z.E. emulates the ZX Spectrum 48K and 128K more or less completely. It supports loading TAP and TZX tape dumps, Z80 snapshots and RZX recordings. It is also able to save snapshots using the Z80 format.\r\n\r\nYou can also load ZIP files with tapes, snapshots or recordings inside. Just do not open a ZIP with several valid files, because it won't know what to do with them.\r\n\r\nWhat works and what not\r\n\r\n * It includes the 48K ROM and the 128K ROM. You can add `?48k=N` or `?48k=Y` to the url to force an initial mode, or use the `Reset` buttons below.\r\n * All documented CPU instructions and most undocumented ones are emulated.\r\n * CPU flags X and Y are only partially emulated.\r\n * CPU timing is an approximation. In particular memory contention timing is not totally accurate, but good enough for most purposes (loading tapes, border bars, etc).\r\n * Loading TAP and TZX files, either directly or from ZIP files. TZX support is somewhat around 90% (if you have some file that does not work and you think it should, please send it to me). You can load a tape dump directly from the URL by adding `?tape=\u003curl\u003e`.\r\n * Loading and saving Z80 snapshots. Only 48K and 128K snapshots, obviously. You can load a snapshot directly from the URL by adding `?snapshot=\u003curl\u003e`.\r\n * Currently you cannot save tape files. You can try to save it and you will hear the sound, but there is no way to record the data.\r\n * Emulation of the internal speaker. The 128K sound generator (AY-3-8910) is also emulated.\r\n * Support for joystick Kempston, Sinclair and Protek. Experimental support of gamepads.\r\n * It uses WebGL for rendereng if available. It falls back to Canvas2D if not. You can force the Canvas2D mode adding `?webgl=N` to the url.\r\n * In 128k mode, it actually implements the banking of the +2A, although it does not ship the necessary ROMs. This is useful for the full RAM mode used by some programs, such as [this great Pacman emulator](http://simonowen.com/spectrum/pacemuzx/).\r\n\r\n## How to build\r\n\r\nIf you want to build this project yourself, first of all  you need a recent Rust toolchain and the `wasm32-unknown-unknown target`. If you use `rustup` just run:\r\n\r\n```\r\n$ rustup target add wasm32-unknown-unknown\r\n```\r\n\r\nYou also need `wasm-pack`, so if you do not have it do:\r\n\r\n```\r\n$ cargo install wasm-pack\r\n```\r\n\r\nThen clone this repository and build it with this command:\r\n\r\n```\r\n$ wasm-pack build --no-typescript --target web --release\r\n```\r\n\r\nAlternatively you can use the following [xtask](https://github.com/matklad/cargo-xtask):\r\n\r\n```\r\n$ cargo xtask pack\r\n```\r\n\r\nThat that's all! Now you can launch a local sever such as `python -m http.server` and point your browser to the appropriate url.\r\n\r\n## LICENSE\r\n\r\nAs most of the Rust ecosystem, the source code of this projects is published under the MIT License. See [LICENCE.MIT](LICENSE.MIT) for the full details.\r\n\r\nZX Spectrum ROMs are copyrighted by Amstrad. Amstrad have kindly given their permission for the redistribution of their copyrighted material but retain that copyright. See the included [ROMs.txt](ROMs.txt) file for details.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigorc%2Fraze","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodrigorc%2Fraze","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigorc%2Fraze/lists"}