{"id":13503055,"url":"https://github.com/spieglt/nestur","last_synced_at":"2025-04-05T02:09:27.237Z","repository":{"id":44898350,"uuid":"221088262","full_name":"spieglt/nestur","owner":"spieglt","description":"The NES (emulator) you left outside in the rain but let dry and still kind of works","archived":false,"fork":false,"pushed_at":"2024-02-02T02:34:38.000Z","size":1195,"stargazers_count":542,"open_issues_count":1,"forks_count":17,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-29T01:09:12.605Z","etag":null,"topics":["emulator","nes","rust","sdl2"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spieglt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-11-11T23:24:14.000Z","updated_at":"2025-03-20T04:40:42.000Z","dependencies_parsed_at":"2024-10-31T22:31:24.393Z","dependency_job_id":"82ede8b8-f588-462d-8b1a-a48450a966df","html_url":"https://github.com/spieglt/nestur","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/spieglt%2Fnestur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spieglt%2Fnestur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spieglt%2Fnestur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spieglt%2Fnestur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spieglt","download_url":"https://codeload.github.com/spieglt/nestur/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276188,"owners_count":20912288,"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","nes","rust","sdl2"],"created_at":"2024-07-31T22:02:35.067Z","updated_at":"2025-04-05T02:09:27.218Z","avatar_url":"https://github.com/spieglt.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# nestur\n\nNestur is an NES emulator. There are plenty of full-featured emulators out there; this is primarily an educational project but it is usable. There may still be many bugs, but I'm probably not aware of them so please submit issues.\n- no use of `unsafe`\n- NTSC timing\n- supports mappers 0-4 which cover ~85% of [games](http://tuxnes.sourceforge.net/nesmapper.txt)\n\n\u003cimg src=\"pics/smb.png\" width=250\u003e \u003cimg src=\"pics/zelda_dungeon.png\" width=250\u003e \u003cimg src=\"pics/kirby.png\" width=250\u003e \u003cimg src=\"pics/dk.png\" width=250\u003e \u003cimg src=\"pics/smb3.png\" width=250\u003e \u003cimg src=\"pics/excitebike.png\" width=250\u003e\n\nThe code aims to follow the explanations from the [NES dev wiki](https://wiki.nesdev.com/w/index.php/NES_reference_guide) where possible, especially in the PPU, and the comments quote from it often. Thanks to everyone who contributes to that wiki/forum, and to Michael Fogleman's [NES](https://github.com/fogleman/nes) and Scott Ferguson's [Fergulator](https://github.com/scottferg/Fergulator) for getting me unstuck at several points.\n\n## Controls\n```\n Button  |   Key\n___________________\n|   A    |    D   |\n|   B    |    F   |\n| Start  |  Enter |\n| Select | R-Shift|\n|   Up   |   Up   |\n|  Down  |  Down  |\n|  Left  |  Left  |\n|  Right |  Right |\n-------------------\n\nF2: reset console\nF5: save game state\nF9: load most recent save state\n```\nIf the game is called `mygame.nes`, the save state files will be called `mygame-#.dat`. To load any previous save state, drag and drop a `.dat` file onto the window.\n\n## Use\n\nDouble-click or run the executable from a terminal by itself to launch with instructions. Then click Ok and drag a (iNES/`.nes`) ROM file onto the window. Or, drag and drop a ROM file onto the executable to run it directly, or use the path to the ROM file as the first argument to the terminal command.\n\nIf the game uses battery-backed RAM (if it can save data when the console is turned off), a save file like `rom_filename.sav` will be created in the same folder as the ROM when the program is exited. When Nestur is run again, it will look for a file matching the ROM name, with a `.sav` extension instead of `.nes`.\n\n## Compilation\n\n1. Install [Rust](https://www.rust-lang.org/tools/install)\n2. Have a C compiler\n    - Linux: `sudo apt install build-essential`\n    - Mac: [XCode](https://apps.apple.com/us/app/xcode/id497799835)\n    - Windows: install the [Visual Studio Build Tools](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools\u0026rel=16) (or [Visual Studio](https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=vs-2019) with the \"Desktop development with C++\" workload).\n3. Install CMake\n    - Linux: `sudo apt install cmake`\n    - Mac: install [Homebrew](https://brew.sh/) and run `brew install cmake`\n    - [Windows](https://cmake.org/download/)\n4. `cd nestur/ \u0026\u0026 cargo build --release` (be sure to build/run with the release flag or it will run very slowly)\n5. The `nestur` executable or `nestur.exe` will be in `nestur/target/release`.\n\n## To do\n\n- support other controllers?\n\n- more mappers?\n\n- better save file organization?\n\n## Known problem games\n\n- None currently, please report any issues\n\n\nPlease also check out [Cloaker](https://github.com/spieglt/cloaker) and [Flying Carpet](https://github.com/spieglt/flyingcarpet)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspieglt%2Fnestur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspieglt%2Fnestur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspieglt%2Fnestur/lists"}