{"id":21812174,"url":"https://github.com/enusbaum/adnes","last_synced_at":"2025-07-09T16:37:56.034Z","repository":{"id":263057594,"uuid":"882499257","full_name":"enusbaum/ADNES","owner":"enusbaum","description":"Another dotnet NES (ADNES) Emulator written in C# and coded to be portable as a NuGet package, making it easy to integrate into your own projects","archived":false,"fork":false,"pushed_at":"2024-12-22T19:20:28.000Z","size":122,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T10:15:33.103Z","etag":null,"topics":["csharp","dotnet","dotnet-core","emulation","nes","nes-emulator","nintendo","nuget-package"],"latest_commit_sha":null,"homepage":"","language":"C#","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/enusbaum.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}},"created_at":"2024-11-02T23:54:15.000Z","updated_at":"2025-06-04T14:30:03.000Z","dependencies_parsed_at":"2024-11-15T21:52:25.987Z","dependency_job_id":"e4ff66a0-3934-434c-b02f-5347bff3b42e","html_url":"https://github.com/enusbaum/ADNES","commit_stats":null,"previous_names":["enusbaum/adnes"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enusbaum%2FADNES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enusbaum%2FADNES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enusbaum%2FADNES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enusbaum%2FADNES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enusbaum","download_url":"https://codeload.github.com/enusbaum/ADNES/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enusbaum%2FADNES/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259101317,"owners_count":22805251,"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":["csharp","dotnet","dotnet-core","emulation","nes","nes-emulator","nintendo","nuget-package"],"created_at":"2024-11-27T14:14:30.055Z","updated_at":"2025-06-10T15:31:28.868Z","avatar_url":"https://github.com/enusbaum.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ADNES - Another dotnet NES Emulator\n\nADNES is a Nintendo Emulator wrapped in a NuGet package for easy implementation in any of your projects. The Emulator is written in C# and is designed to be as modular as possible.\n\nThe goal of the project first started as my personal journey to learn more about the NES and how it works. I wanted to create a project that would allow me to learn more about the NES and the underlying hardware, while also providing a platform for others to learn from as well.\n\nThe code itself has been written in a way to balance readability and performance. \n\nHardware components such as the CPU, PPU, Controller, and Cartridge are all wired to/through the Emulator. The Emulator handles the timings both for CPU-\u003ePPU ratio, as well as frame timing on how fast ADNES renders frames (Half, Normal or **TURBO**).\n\n# Overview\n\nImplementing ADNES into your own project is designed to be as simple as possible. The Emulator is wrapped in a NuGet package, and can be installed via NuGet Package Manager.\n\nImplementing the Emulator itself can be done in a few simple steps:\n\n1. Install the NuGet package\n\n```\nInstall-Package ADNES\n```\n\n2. Create Delegate in your application to handle 8-bit bitmap frames as they become available\n\n```csharp\npublic delegate void ProcessFrameDelegate(byte[] outputFrame);\n```\n\nFrames returned from ADNES are 8bpp bitmaps that are 256x240 pixels in size and mapped to the 2C02 NTSC Color Palette. There are helper methods in ADNES `ADNES.Helpers` to assist you in converting the data from\nADNES to 32bpp bitmap data (or 32bpp Bitmap files).\n\n3. Create an instance of the Emulator\n\n```csharp\nvar emulator = new Emulator(byte[] rom, ProcessFrameDelegate processFrameDelegate);\n```\n\nADNES supports iNES format ROMs. The ROM is passed as a byte array to the Emulator. The delegate is used to pass frames to your application as they become available.\n\n4. Start the Emulator\n\n```csharp\npublic void Start()\n```\n\nAs the emulator is running, Frames are processed and passed to the delegate as they become available. The delegate can then be used to display the frames in your own project.\n\nPlayer 1 Controller can be accessed via `public readonly IController Controller1` on the instance of `ADNES.Emulator`.\n\nThere are several properties that are updated during runtime to report the status of the Emulator:\n\n- `public bool IsRunning` - Returns true if the Emulator is currently running\n- `public long TotalCPUCycles` - The total number of CPU cycles that have been processed since the Emulator was started\n- `public long TotalPPUCycles` - The total number of PPU cycles that have been processed since the Emulator was started\n- `public long TotalFrames` - The total number of frames that have been rendered since the Emulator was started\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenusbaum%2Fadnes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenusbaum%2Fadnes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenusbaum%2Fadnes/lists"}