{"id":21615355,"url":"https://github.com/boneill02/ultrachip","last_synced_at":"2025-03-18T16:52:19.907Z","repository":{"id":58942298,"uuid":"527735834","full_name":"boneill02/ultrachip","owner":"boneill02","description":"A CHIP-8 interpreter","archived":false,"fork":false,"pushed_at":"2024-09-18T19:14:27.000Z","size":48,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T20:43:46.223Z","etag":null,"topics":["chip-8","emulator"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boneill02.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}},"created_at":"2022-08-22T21:21:28.000Z","updated_at":"2024-09-22T02:12:42.000Z","dependencies_parsed_at":"2023-01-22T16:45:59.234Z","dependency_job_id":null,"html_url":"https://github.com/boneill02/ultrachip","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/boneill02%2Fultrachip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boneill02%2Fultrachip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boneill02%2Fultrachip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boneill02%2Fultrachip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boneill02","download_url":"https://codeload.github.com/boneill02/ultrachip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244266145,"owners_count":20425824,"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":["chip-8","emulator"],"created_at":"2024-11-24T22:11:28.521Z","updated_at":"2025-03-18T16:52:19.882Z","avatar_url":"https://github.com/boneill02.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ULTRACHIP\n\nVirtual machine based on CHIP-8, with the following improvements:\n\n* Legacy stuff removed (ETI-660 compatibility, reserved memory for interpreter,\nand SYS instruction)\n* 16-bit memory addressing, with 64KiB program/data space\n* 64x64 display using a 16 color 16-bit RGB color palette.\n* Improved sound system (maybe?)\n\n## Display\n\nThe display is a 16 color 64x64 display using a 16-bit RGB color palette,\norganized like so:\n\n```\n+-----------------+\n|(0,0)      (64,0)|\n|                 |\n|                 |\n|                 |\n|                 |\n|                 |\n|(0,64)    (64,64)|\n+-----------------+\n```\n\n## Memory map\n\n```\n+-----------------+ 0xFFFF (65535) End of RAM\n|                 |\n|                 |\n|                 |\n|                 |\n|                 |\n| 0x000 to 0xFFFF |\n|    ULTRACHIP    |\n| Program / Data  |\n|     Space       |\n|                 |\n|                 |\n|                 |\n+-----------------+ 0x000 (0) Start of RAM\n```\n\n## Registers\n\n* V0-VF: General purpose\n* PC: Program counter\n* SP: Stack pointer\n* C: Carry flag\n* TODO Timer and Sound registers\n\n## Instruction set\n\n* 00E0: CLS: clear screen\n* 00EE: RET: return from subroutine\n* 1nnn: JP *addr*: PC=nnn\n* 2nnn: CALL *addr*: SP++; S[SP]=PC; PC=nnn\n* 3xkk: SE Vx, *byte*: Skip next instruction if Vx=kk\n* 4xkk: SNE Vx, *byte*: Skip next instruction if Vx!=kk\n* 5xy0: SE Vx, Vy: Skip next instruction if Vx=Vy\n* 6xkk: LD Vx, *byte*: Vx=kk\n* 7xkk: ADD Vx, *byte*: Vx=Vx+kk\n* 8xy0: LD Vx, Vy: Vx=Vy\n* 8xy1: OR Vx, Vy: Vx=Vx OR Vy\n* 8xy2: AND Vx, Vy: Vx=Vx AND Vy\n* 8xy3: XOR Vx, Vy: Vx=Vx XOR Vy\n* 8xy4: ADD Vx, Vy: Vx=Vx + Vy; If (Vx \u003e 255) C=1, else 0. Store lower 8 bits\n* 8xy5: SUB Vx, Vy: Vx=Vx - Vy; If (Vx \u003e Vy) VF=1, else 0\n* TODO finish\n\n## Sound\n\nTODO\n\n## Sprites\n\nTODO\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboneill02%2Fultrachip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboneill02%2Fultrachip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboneill02%2Fultrachip/lists"}