{"id":17262673,"url":"https://github.com/jasonrhansen/rustednes","last_synced_at":"2025-04-14T07:33:06.009Z","repository":{"id":82366811,"uuid":"138808394","full_name":"jasonrhansen/RustedNES","owner":"jasonrhansen","description":"Nintendo Entertainment System emulator written in Rust","archived":false,"fork":false,"pushed_at":"2025-04-06T16:42:05.000Z","size":560,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T17:24:56.059Z","etag":null,"topics":["emulators","libretro","nes-emulator","nintendo","nintendo-nes","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jasonrhansen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2018-06-27T00:25:07.000Z","updated_at":"2025-04-06T16:42:09.000Z","dependencies_parsed_at":"2023-12-31T17:28:35.475Z","dependency_job_id":"12ded630-eb5b-41a3-ba53-5d8b81a4fa29","html_url":"https://github.com/jasonrhansen/RustedNES","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonrhansen%2FRustedNES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonrhansen%2FRustedNES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonrhansen%2FRustedNES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonrhansen%2FRustedNES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jasonrhansen","download_url":"https://codeload.github.com/jasonrhansen/RustedNES/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248839365,"owners_count":21169800,"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":["emulators","libretro","nes-emulator","nintendo","nintendo-nes","rust"],"created_at":"2024-10-15T07:54:25.976Z","updated_at":"2025-04-14T07:33:05.965Z","avatar_url":"https://github.com/jasonrhansen.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RustedNES\n\n## Description\n\nRustedNES is a Nintendo Entertainment System emulator written in the Rust programming language. It runs on Windows, MacOS, and Linux. It currently supports many commercial games.\n\n## Screenshots\n\n![screenshot mario](media/screenshot_mario.png)\n![screenshot zelda](media/screenshot_zelda.png)\n![screenshot metroid](media/screenshot_metroid.png)\n![screenshot contra](media/screenshot_contra.png)\n\n## Building\n\nTo build RustedNES you will need to have have Rust installed. You can find instructions here https://www.rust-lang.org/en-US/install.html\n\nFor the SDL frontend you will also need SDL2 installed. For Ubuntu that can be done like this:\n\n```\nsudo apt install libsdl2-dev\n```\n\nThen run the following in the project directory to build:\n\n```\ncargo build --release\n```\n\nNote: the release flag may be necessary to get playable speed.\n\n## Running\n\nThere are currently 2 different ways to run RustedNES. There is a simple SDL frontend, and a libretro core that can be used with RetroArch or other libretro frontends.\n\n### SDL\n\nThe SDL interface is simple to use, but it's not configurable. To run with more features, see [libretro](#libretro) below.\n\nThe built executable can be found in the `target/release` directory. The file is named `rustednes-sdl` (with .exe extension on Windows).\n\nTo play a game, simply pass the ROM file as an argument.\n\n```\n$ rustednes-sdl --help\nAn SDL2 frontend for rustednes-core\n\nUsage: rustednes-sdl [OPTIONS] \u003cROM\u003e\n\nArguments:\n  \u003cROM\u003e  The name of the ROM to load\n\nOptions:\n  -d, --debug       Start in debug mode\n      --noaudio     Disable audio\n  -v, --verbose...  More output per occurrence\n  -q, --quiet...    Less output per occurrence\n  -h, --help        Print help information\n  -V, --version     Print version information\n```\n\nHere are the keyboard controls:\n\n| Button | Key |\n| --- | --- |\n| Left | \u003ckbd\u003eleft\u003c/kbd\u003e |\n| Right | \u003ckbd\u003eright\u003c/kbd\u003e |\n| Up | \u003ckbd\u003eup\u003c/kbd\u003e |\n| Down | \u003ckbd\u003edown\u003c/kbd\u003e |\n| Select | \u003ckbd\u003espace\u003c/kbd\u003e |\n| Start | \u003ckbd\u003eenter/return\u003c/kbd\u003e |\n| A | \u003ckbd\u003eX\u003c/kbd\u003e |\n| B | \u003ckbd\u003eZ\u003c/kbd\u003e |\n\n### libretro\n\nUsing RustedNES with a libretro frontend, such as RetroArch, allows many additional features, such as:\n\n* Save states\n* SRAM saving\n* Changing window size / fullscreen\n* Gamepads and other input devices\n* Configurable buttons\n* Cheats\n\nTo run on RetroArch you will need to find the shared library of the libretro core that was created in the build step. You can find it in the `target/release` directory. The name of the file will be different depending on the platform:\n\n* `rustednes_libretro.dll` on Windows\n* `librustednes_libretro.dylib` on MacOS\n* `librustednes_libretro.so` on Linux\n\nYou need to pass that file as an argument after -L, as in the following example for MacOS:\n\n```\nretroarch -L librustednes_libretro.dylib name_of_rom.nes\n```\n\n## License\n\nDuel-license under MIT license ([LICENSE-MIT](LICENSE-MIT)), or Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE))\n\n## Special Thanks\n\nThanks to the people who created the following emulator projects, which were used for ideas and inspiration for this project:\n\n* https://github.com/emu-rs/rustual-boy (Virtual Boy emulator written in Rust)\n* https://github.com/pcwalton/sprocketnes (NES emulator written in Rust)\n* https://github.com/fogleman/nes (NES emulator written in Go)\n\nAlso thanks to nesdev.com for all of the awesome resources on their wiki: http://wiki.nesdev.com/w/index.php/Nesdev_Wiki\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonrhansen%2Frustednes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjasonrhansen%2Frustednes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonrhansen%2Frustednes/lists"}