{"id":18272471,"url":"https://github.com/ajor/gameboy","last_synced_at":"2025-04-05T02:31:05.039Z","repository":{"id":98327632,"uuid":"45803181","full_name":"ajor/gameboy","owner":"ajor","description":"Gameboy emulator targeting Linux, OSX, asm.js/Emscripten and Chrome Native Client (NaCl)","archived":false,"fork":false,"pushed_at":"2017-09-16T13:05:22.000Z","size":122,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-20T21:18:44.517Z","etag":null,"topics":["emscripten","emulation","emulator","gameboy","gameboy-emulator","nacl"],"latest_commit_sha":null,"homepage":"http://ajor.co.uk/gameboy","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/ajor.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}},"created_at":"2015-11-08T23:04:27.000Z","updated_at":"2021-07-29T02:23:33.000Z","dependencies_parsed_at":"2023-06-26T01:31:47.489Z","dependency_job_id":null,"html_url":"https://github.com/ajor/gameboy","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/ajor%2Fgameboy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajor%2Fgameboy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajor%2Fgameboy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajor%2Fgameboy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajor","download_url":"https://codeload.github.com/ajor/gameboy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247279366,"owners_count":20912870,"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":["emscripten","emulation","emulator","gameboy","gameboy-emulator","nacl"],"created_at":"2024-11-05T12:02:20.505Z","updated_at":"2025-04-05T02:31:04.984Z","avatar_url":"https://github.com/ajor.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gameboy Emulator\n\nThis repository contains a Gameboy emulator core with a choice of three frontends:\n- [Native binary](#native-binary), only tested on Linux\n- [asm.js](#asmjs), compiled using Emscripten\n- [Google Chrome Native Client (NaCl)](#nacl) application\n\nOnline demos are available at http://ajor.co.uk/gameboy/\n\n## Controls\n\nThe Gameboy's direction keys are mapped to the arrow keys.\n\n    Start button = enter\n    Select button = backspace\n    A button = z\n    B button = x\n\n# Completeness / accuracy\n\nSave files are compatible with other popular Gameboy emulators.\n\nAudio support is not complete.\n\nMemory bank controllers (MBCs) 1 and 3 are the only ones currently supported, although the vast majority of Gameboy games use one of these two (or no MBC at all). The Real Time Clock (RTC) used in MBC3 is not implemented, so games which use it to keep track of time while the Gameboy is powered off will not function correctly in some aspects.\n\nScanlines are rendered individually, with each scanline being rendered in one go at the end of the H-Blank period. This means games which modify the data to be drawn mid-scanline do not render correctly - e.g. Prehistorik Man title sequence.\n\n## Blargg's tests\nTODO results\n\n# Native binary\n\n## Building\n\n### Requirements\n- A C++14 compiler\n- CMake 2.8.12+\n- GLFW3\n- GLEW\n\n### Compilation\nCompile using CMake (defaults to release configuration):\n```\nmkdir build\ncd build\ncmake ../\nmake\n```\n\n## Usage\n\n    ./gb rom\n\n# asm.js\n\n## Building\n\n### Requirements\n- [Emscripten SDK](https://kripken.github.io/emscripten-site/)\n- Node.js\n- CMake 2.8.12+\n\n### Compilation\nCompile using CMake, substituting the path to the Emscripten.cmake toolchain file on your system:\n```\nmkdir build\ncd build\ncmake ../ -DCMAKE_TOOLCHAIN_FILE=/usr/lib/emscripten/cmake/Modules/Platform/Emscripten.cmake\nmake\n```\n\n## Usage\nPlace glfw/emscripten.html and the generated gb.js and gb.js.mem files in the same directory and open in a web browser.\n\n# NaCl\n\n## Building\n\n### Requirements\n- [Chrome Native Client SDK](https://developer.chrome.com/native-client)\n- CMake 2.8.12+\n\n### Compilation\nCompile using CMake, replacing `[NaCl toolchain bin dir]` with the path to the PNaCl toolchain directory for your platform, e.g.: `~/nacl_sdk/pepper_46/toolchain/linux_pnacl/bin`\n```\nmkdir build\ncd build\ncmake ../ -DNACL_TOOLCHAIN_BIN=[NaCl toolchain bin dir] -DCMAKE_TOOLCHAIN_FILE=../nacl/NaCl.cmake\nmake\n```\n\n## Usage\nPlace the generated gb.pexe binary along with nacl/index.html and nacl/gameboy.nmf from this repository on a web server and open in Google Chrome.\n\nIt can be run from your own computer using Python's HTTP server module:\n\n    python2 -m SimpleHTTPServer\nor:\n\n    python3 -m http.server\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajor%2Fgameboy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajor%2Fgameboy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajor%2Fgameboy/lists"}