{
  "added_at": "2026-10-19",
  "additional_evidence_urls": [
    "https://github.com/cdlewis/snowboardkids2-decomp/blob/7600c79d3909fce344435dcccbb6ad3bc2aad34e/README.md",
    "https://github.com/cdlewis/snowboardkids2-decomp/blob/7600c79d3909fce344435dcccbb6ad3bc2aad34e/symbol_addrs.txt"
  ],
  "category": "learning",
  "description_en": "A walkthrough from the Snowboard Kids 2 decompilation project on attaching gdb-multiarch to the Ares emulator while the matching build still cannot carry debug information. It breaks on a function by its ELF symbol name and reads one structure byte by hand to test whether that byte selects the level overlay. A short method note on checking decompilation hypotheses at runtime, not a reconstruction result.",
  "description_zh": "Snowboard Kids 2 反编译项目的一篇操作说明：在一致性构建仍无法加入调试信息时，把 gdb-multiarch 接到 Ares 模拟器上。文中按 ELF 符号名在函数处设断点，再手动读取结构体中的一个字节，检验它是否决定加载哪个关卡 overlay。这是在运行时检验反编译假设的简短方法记录，而非重建成果。",
  "entry_url": "https://awesomerea.org/resources/finding-jingle-town-n64-debugging/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/finding-jingle-town-n64-debugging/",
  "evidence_url": "https://blog.chrislewis.au/finding-jingle-town-debugging-an-n64-game-without-symbols/",
  "group": "learn",
  "id": "finding-jingle-town-n64-debugging",
  "json_url": "https://awesomerea.org/resources/finding-jingle-town-n64-debugging/record.json",
  "kind": "learning-resource",
  "markdown_url": "https://awesomerea.org/resources/finding-jingle-town-n64-debugging/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/finding-jingle-town-n64-debugging/index.md",
  "name": "Finding Jingle Town: Debugging an N64 Game without Symbols",
  "name_zh": "寻找 Jingle Town：在没有调试符号时调试 N64 游戏",
  "record_type": "resource",
  "relationship": "learning",
  "requirements": [
    "The post, dated 23 December 2025, asks one question: how Snowboard Kids 2 picks the level overlay on level entry. It breaks on a function that indexes 16 overlays and reads the candidate byte for Sunny Mountain, Turtle Island and Jingle Town (0, 1 and 2). Other levels and the code that sets the index are not traced.",
    "Following it needs a Snowboard Kids 2 N64 ROM, original or rebuilt by the decompilation (the post treats them as byte-identical), and the decompilation's build/snowboardkids2.elf for function names. The post does not cover obtaining or building either.",
    "Tools are gdb-multiarch set to mips:4000 and Ares with debugging enabled, connected through Ares's GDB remote support; an SSH reverse tunnel is optional when GDB runs on another host, as on the author's x86 Ubuntu server. The post explains that adding -g would shift sections in the absolute-address build and usually stop it booting, so structure fields are read by manual pointer arithmetic.",
    "Results are the author's observations from one debugging session. The post calls the workflow painfully manual and reports gdbgui did not work with the setup. Its generated names have since changed: at reviewed commit 7600c79, symbol_addrs.txt names 0x8003D560 initRace and 0x800AFE8C gGameSessionContext, and the footnoted src/3E160.c is no longer in the tree.",
    "The post describes manual debugging. The decompilation repository has no license file at the reviewed commit, and the game ROM and its content keep their own rights."
  ],
  "requirements_zh": [
    "文章日期为 2025 年 12 月 23 日，只回答一个问题：Snowboard Kids 2 进入关卡时如何选择要加载的关卡 overlay。文中在一个按索引访问 16 个 overlay 的函数处设断点，并读取 Sunny Mountain、Turtle Island 和 Jingle Town 三个关卡对应的候选字节（0、1、2）。其他关卡及设置该索引的代码均未追踪。",
    "照做需要 Snowboard Kids 2 的 N64 ROM（原版或由反编译项目重建的版本，文中认为两者逐字节一致），以及反编译项目生成的 build/snowboardkids2.elf 以提供函数名。文章未说明如何取得或构建二者。",
    "所用工具为设定 mips:4000 架构的 gdb-multiarch，以及开启调试功能的 Ares，二者通过 Ares 的 GDB 远程调试支持连接；若 GDB 运行在另一台主机上（如作者使用的 x86 Ubuntu 服务器），可另用 SSH 反向隧道。文章解释，在依赖绝对地址的构建中加入 -g 会使各段偏移，游戏通常无法启动，因此只能手动计算指针偏移来读取结构体字段。",
    "结果是作者在一次调试过程中的观察。文章称该流程非常依赖手工操作，并说明 gdbgui 未能在该环境下正常使用。文中自动生成的名称后来已更改：在所审阅的提交 7600c79 中，symbol_addrs.txt 将 0x8003D560 命名为 initRace，将 0x800AFE8C 命名为 gGameSessionContext，脚注链接的 src/3E160.c 也已不在源码树中。",
    "文章记录的是手动调试。所审阅提交中的反编译仓库没有许可证文件，游戏 ROM 及其内容仍受各自权利约束。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://blog.chrislewis.au/finding-jingle-town-debugging-an-n64-game-without-symbols/",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
