{"id":16521754,"url":"https://github.com/theloni-monk/ya6502e","last_synced_at":"2026-04-13T02:50:42.459Z","repository":{"id":133183332,"uuid":"256918298","full_name":"theloni-monk/YA6502E","owner":"theloni-monk","description":"Yet Another 6502 Emulator: An emulator for the iconic MOS 6502 CPU written in c++","archived":false,"fork":false,"pushed_at":"2020-06-04T07:45:23.000Z","size":13192,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-13T13:29:31.160Z","etag":null,"topics":["6502","6502-processor","assembly","assembly-6502","cpp","emulator"],"latest_commit_sha":null,"homepage":"","language":"C++","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/theloni-monk.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":"2020-04-19T05:02:04.000Z","updated_at":"2023-02-01T05:06:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"8dc14ead-fa58-4980-9768-a60265c9aed1","html_url":"https://github.com/theloni-monk/YA6502E","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/theloni-monk%2FYA6502E","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theloni-monk%2FYA6502E/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theloni-monk%2FYA6502E/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theloni-monk%2FYA6502E/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theloni-monk","download_url":"https://codeload.github.com/theloni-monk/YA6502E/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241596703,"owners_count":19988117,"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":["6502","6502-processor","assembly","assembly-6502","cpp","emulator"],"created_at":"2024-10-11T16:57:50.064Z","updated_at":"2026-04-13T02:50:37.437Z","avatar_url":"https://github.com/theloni-monk.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yet Another 6052 Emulator\n\nThere are many like it but this one is mine. Written by Theo Cooper\n\n## Architechture\n\nThe ```CPU_6502``` class extends the ```MemoryInterface``` class which is a wrapper for any device/object that accesses the virtual memory bus.\n\nThe virtual memory bus is implemented in the ```MemoryMapper``` class which at its most base form is essentially a pointer to a 64k byte array.\n\nThe fetch cycle of the CPU entails decoding the opcode and using the information of the addressing mode to construct the parameters that will be passed to the instruction. The instructions are written as lamda functions in Operations.cpp which are then put into an array which is used to map the instructions to the actual function pointers. The program counter is then incremented and the instruction run.\n\nThe overall architecture of the system was built with flexibility and modularity in mind. It isn't strictly necessary to develop such a complex system by which the CPU accesses its memory. But by routing everything through a memory map and by constructing a special runtime enviorment class to house of of the necessary components for a larger system, the overall implementation becomes very modular.\n\nIt would be a logical next step in this project to leverage its modularity to program an emulator for an NES, which runs on a 6502 cpu.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheloni-monk%2Fya6502e","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheloni-monk%2Fya6502e","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheloni-monk%2Fya6502e/lists"}