{"id":27745697,"url":"https://github.com/lhsazevedo/tbg-decomp","last_synced_at":"2025-04-28T19:57:10.413Z","repository":{"id":37684202,"uuid":"474813806","full_name":"lhsazevedo/tbg-decomp","owner":"lhsazevedo","description":"Decompiling Tokyo Bus Guide (東京バス案内) for the Sega Dreamcast","archived":false,"fork":false,"pushed_at":"2025-04-12T03:41:39.000Z","size":38223,"stargazers_count":24,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-28T19:57:04.420Z","etag":null,"topics":["decompilation","dreamcast","hacking","retro-reversing","reverse-engineering","sega"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/lhsazevedo.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}},"created_at":"2022-03-28T02:08:01.000Z","updated_at":"2025-04-04T19:49:19.000Z","dependencies_parsed_at":"2024-04-11T20:51:23.518Z","dependency_job_id":null,"html_url":"https://github.com/lhsazevedo/tbg-decomp","commit_stats":null,"previous_names":["lhsazevedo/tbg-decomp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lhsazevedo%2Ftbg-decomp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lhsazevedo%2Ftbg-decomp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lhsazevedo%2Ftbg-decomp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lhsazevedo%2Ftbg-decomp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lhsazevedo","download_url":"https://codeload.github.com/lhsazevedo/tbg-decomp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251380914,"owners_count":21580338,"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":["decompilation","dreamcast","hacking","retro-reversing","reverse-engineering","sega"],"created_at":"2025-04-28T19:57:08.984Z","updated_at":"2025-04-28T19:57:10.407Z","avatar_url":"https://github.com/lhsazevedo.png","language":"PHP","funding_links":[],"categories":["Game \u0026 Studio Tools","Nintendo Wii"],"sub_categories":["Sega"],"readme":"# Tokyo Bus Guide Decompilation\n\n[![Test](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/test.yml/badge.svg)](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/test.yml)\n[![Build](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/build.yml/badge.svg)](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/build.yml)\n[![Build Matching](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/build_matching.yml/badge.svg)](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/actions/workflows/build_matching.yml)\n\n![Progress Bar](./progress.svg)\n\n![Main function hero](./tbg.png)\n\n_Yup, [this is a real file](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/blob/88fb8f87500f9474780cd9a0f7dafa00b14b0be7/src/010080_main.c)!_\n\n## Introduction\nWelcome to the first-ever public Dreamcast game decompilation project, for the classic title Tokyo\nBus Guide! The goal is to fully decompile the code, focusing on functional equivalence rather than\nbyte-level matching. This project is a collaborative effort to advance Dreamcast reverse\nengineering.\n\n\u003e [!WARNING]\n\u003e It is important to note that it is not possible to build a playable ROM from this decompilation\n\u003e project without a legitimate backup of the original game. This project is intended for educational\n\u003e and research purposes only, and users must ensure they have the legal right to use any game assets\n\u003e in their possession. Unauthorized distribution or use of game data is strictly prohibited.\n\n## Approach\nUnlike traditional byte-level matching, we are using a custom [SH4 object simulator and testing\nframework](https://github.com/lhsazevedo/sh4objtest) to test decompiled functions against their\noriginal counterparts, ensuring they behave exactly the same.\n\n## Project Status\n\n![Progress Chart](./progress.png)\n\nThis project is ongoing and is being updated regularly. It is in a shiftable state, which means the\noriginal code can be shifted around in memory, allowing for edits such as data modifications without\nworrying about length changes. It is also possible to recompile the binary using the decompiled\nfunctions that are available.\n\n### Current Achivements:\n- Rebuilding the binary with decompiled functions alongside original code.\n- Custom logs from decompiled C files, written to the Dreamcast serial interface and on-screen debug\n  text:\n   - [Watch capture](https://twitter.com/lhs_azevedo/status/1777558619480867048)\n   - [View code](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/blob/7cbc8608b7a7568db8e26e9c9302b8a6f983460e/src/011120_asset_queues.c#L1186-L1197)\n- CI workflows with matching builds, non-matching builds and unit tests checks.\n\n## How to Contribute\nContributions are welcome! To get started, please refer to the project setup instructions in\n[Project Setup](docs/setup.md). Detailed contribution guidelines will be available soon, providing\nyou with all the information you need to contribute effectively to this project. For now, you can\nlook the [CI workflows](https://github.com/lhsazevedo/tokyo-bus-guide-decomp/tree/main/.github/workflows)\nto see how tests are being executed.\n\n## Useful resources\n- [Dreamcast Programming](https://mc.pp.se/dc/) by Marcus Comstedt\n- [Flycast source code](https://github.com/flyinghead/flycast)\n- [My trashy Flycast debugger](https://github.com/lhsazevedo/flycast/tree/dbgnet)\n- Dreamcast SDKs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flhsazevedo%2Ftbg-decomp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flhsazevedo%2Ftbg-decomp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flhsazevedo%2Ftbg-decomp/lists"}