{"id":13822891,"url":"https://github.com/MarkMcCaskey/rusty-boy","last_synced_at":"2025-05-16T17:32:32.451Z","repository":{"id":85972308,"uuid":"78358772","full_name":"MarkMcCaskey/rusty-boy","owner":"MarkMcCaskey","description":"Gameboy emulator in Rust","archived":false,"fork":false,"pushed_at":"2023-08-13T03:49:06.000Z","size":881,"stargazers_count":27,"open_issues_count":20,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-07-18T12:11:01.561Z","etag":null,"topics":["debugger","emulator","gameboy","gameboy-emulator","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarkMcCaskey.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2017-01-08T17:22:21.000Z","updated_at":"2024-05-31T20:04:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"98a4c77f-fb5e-461c-8554-c68ebb79a1f7","html_url":"https://github.com/MarkMcCaskey/rusty-boy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkMcCaskey%2Frusty-boy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkMcCaskey%2Frusty-boy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkMcCaskey%2Frusty-boy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarkMcCaskey%2Frusty-boy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarkMcCaskey","download_url":"https://codeload.github.com/MarkMcCaskey/rusty-boy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":213893313,"owners_count":15653524,"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":["debugger","emulator","gameboy","gameboy-emulator","rust"],"created_at":"2024-08-04T08:02:22.835Z","updated_at":"2024-08-04T08:09:10.822Z","avatar_url":"https://github.com/MarkMcCaskey.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# rusty-boy\n[![Build Status](https://travis-ci.org/MarkMcCaskey/rusty-boy.svg?branch=master)](https://travis-ci.org/MarkMcCaskey/rusty-boy)\n\nA Gameboy emulator and related tools in Rust\n\nIt's currently in a very unstable state.\n\nMade live on twitch.tv/maoeurk\n(Unfortunately I'm not currently streaming, but I'd like to resume in the near future)\n\n## WARNING\n\nV0.1.1 introduces a lot of instability and has many regressions\n\nDon't expect it to work outside of a development context at this stage.\n\nContributions welcome!\n\n## About\n\nProject done for fun and learning about Rust and project management.\n\nMemory visualization inspired by [ICU64 / Frodo Redpill v0.1](https://icu64.blogspot.com/2009/09/first-public-release-of-icu64frodo.html)\n\nV0.1.0: image of memory visualization of Tetris.\n![tetris v0.1.0](images/tetris.0.1.0.png)\n\nV0.1.0: Game, _Popup_, running with the ncurses debugger.\n![popup debugger v0.1.0](images/popup-debugger.0.1.0.png)\n\n## State of the project\n\nThings came up and I stopped developing this and streaming.  The primary reason being that the change from 0.1.0 to 0.2.0 was too large and became unmanageable.\n\nCurrent goals:\n\n- [ ] Reduce scope of project\n\n- [ ] Rewrite rendering and visualization to be GPU based (Vulkan or OpenGL)\n\n- [ ] Finish rendering (sprite flipping, textboxes)\n\n- [ ] Rewrite sound (properly and with visualizations)\n\n- [ ] Refactor CPU, memory management, and IO (basically the entire project)\n\n- [ ] Optimize CPU execution (high level JIT? no machine code generation, just recompiled to a more performant bytecode) if it's a performance bottleneck\n\n- [ ] Fix usability bugs (rebindable keys, some kind of more complete controller support)\n\n- [ ] Fix regressions introduced in 0.1.1 (Tetris crashes now ;_;)\n\n\nNon goals:\n\n- Fancy compilers, assemblers, and debug/dev tools (I'll add support for these in a decoupled way if I actually finish the tasks above)\n\n- Full support for extra features (like the camera)\n\n= Be a better product than existing emulators (I'm sure there are much nicer emulators for playing games.  Usability is not a primary goal at this time)\n\n## Building\n\nFirst install `libsdl2-dev`.  If you're new to Rust, install `rustup`\nto install `rustc` and `cargo`.\n\nYou may need to install ncurses libraries to compile this project.\nTODO: test and update this\n\nThen just run:\n\n```\ncd rusty-boy\ncargo install\n```\n\nand you should be up and running.\n\n## Running\n\nTo run, run the following command:\n```\ncargo run --release -- /path/to/rom\n```\n\nTo run with the TUI debugger, run:\n```\ncargo run --release --features=debugger -- /path/to/rom -d\n```\n\nTo run with the debugger, run:\n```\ncargo run --release --features=\"debugger\" -- /path/to/rom -d\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarkMcCaskey%2Frusty-boy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarkMcCaskey%2Frusty-boy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarkMcCaskey%2Frusty-boy/lists"}