{"id":31068456,"url":"https://github.com/richstokes/nez","last_synced_at":"2025-09-15T21:36:38.269Z","repository":{"id":308091887,"uuid":"1031586722","full_name":"richstokes/NEZ","owner":"richstokes","description":"🕹️ Vibe Coding a NES emulator in python. 99% not working. Maybe one day it will!","archived":false,"fork":false,"pushed_at":"2025-09-03T03:14:52.000Z","size":772,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-03T04:22:50.646Z","etag":null,"topics":["ai-experiments","emulation","nintendo","python-game-development","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"Python","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/richstokes.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-04T03:13:25.000Z","updated_at":"2025-09-03T03:14:55.000Z","dependencies_parsed_at":"2025-08-04T06:00:43.094Z","dependency_job_id":"5a0d952e-78fb-40be-8571-7586024d339a","html_url":"https://github.com/richstokes/NEZ","commit_stats":null,"previous_names":["richstokes/nez"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/richstokes/NEZ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FNEZ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FNEZ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FNEZ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FNEZ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richstokes","download_url":"https://codeload.github.com/richstokes/NEZ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FNEZ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275326594,"owners_count":25445042,"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","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai-experiments","emulation","nintendo","python-game-development","vibe-coding"],"created_at":"2025-09-15T21:36:34.322Z","updated_at":"2025-09-15T21:36:38.226Z","avatar_url":"https://github.com/richstokes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NEZ - NES Emulator\n\nA Nintendo Entertainment System (NES) emulator **vibe-coded** in Python.  \n\nAn experiment to see how close to a working emulator I can get, using both Warp and GitHub Copilot with various incantations of prompts and models. I'll write a bit more about this later if it gets close to working. I'm reviewing basically none of the generated code, instead I'm just giving the LLMs feedback based on my experience when running the emulator and steering it on areas I think it may need to focus on.  \n\nRight now it can _kind_ of load some games/ROMs, but theres a ton of corruption and performance is terrible!\n\nI had assumed that being a 40 year old, incredibly well documented platform, that the LLMs may have been able to build this relatively easily. So far it's been a nightmare, but I'm stubborn so going to keep nudging this along.\n\nEdit, September 2025: This was a horrible idea. LLMs are creating a mess. Python isn't fast enough. I will revisit this down the line and see if AI is at a point where this is less painful!\n\n\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/c0.png\" alt=\"Screenshot of NEZ running\" width=\"50%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/c1.png\" alt=\"Screenshot of NEZ running\" width=\"50%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/c2.png\" alt=\"Screenshot of NEZ running\" width=\"50%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/c3.png\" alt=\"Screenshot of NEZ running\" width=\"50%\"\u003e\n\u003c/p\u003e\n\n\n\n## Things I have found are not great when attempting this\n\n- Can blow through a months Warp quota in a couple of hours when asking it to dive deep into implementing/reviewing logs. Copilot isn't much better. This experiment is doing a lot of iterating/scanning huge log output so perhaps understandable, but it doesn't feel like you get many credits for your money.\n- GitHub Copilot can't read zsh terminal output properly. Switching it to bash seems to be more reliable.\n- GitHub Copilot can't auto run commands, so have to repeatedly click to allow it to grep logs, etc. It looks like they might be fixing this soon.\n- GitHub Copilot seems to hardly ever consider the `copilot-instructions.md` file.\n- The \"lower\" models (GPT \u003c5, the free models with copilot, gemini) are often lazy and like to either propose changes vaguely, and not actually implement them even though they are in agent mode. Or they don't consider the full context, often deleting large swathes of code with placeholders like `# Rest of code here`. Sometimes I catch this, but I'm mostly not reviewing the code. Instead, commit often and revert if it seems to have regressed. I'm sure the spaghetti factor here is horrendous as a result.\n- The lower models often like to duplicate functions. Again it seems that they are not reviewing/considering the full context of the codebase (even when asked). Often times I've had to tell it to go and consolidate duplicate/similar methods. Similarly they have a tendency to create placeholder or stub methods.\n- As a result, using non-premium models is basically pointless / will result in a mess and set you back.\n\n## Installation\n\nUsing pipenv:\n\n```bash\npipenv install\n```\n\n## Usage\n\nRun the emulator with a ROM file:\n\n```bash\npipenv run python main.py mario.nes\n```\n\n### Controls\n\n| Key | NES Button |\n|-----|------------|\n| Arrow Keys | D-Pad |\n| J | A Button |\n| K | B Button |\n| Space | Select |\n| Enter | Start |\n| R | Reset System |\n| Escape | Quit |\n\n## Contributions\n\nContributions are welcome! Feel free to throw up a PR if you know of any changes that could help!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Fnez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichstokes%2Fnez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Fnez/lists"}