[{"timestamp":"2026-10-17T13:50:28Z","commit_sha":"46fb0e45a73a1b850c14f6473f64bca560dbbd2e","commit_message":"Match 252 more functions (1641 / 6254)\n\n- gen_ghidra: try -fexceptions for functions that make calls (the game's\n  C++ files were built with it, so they have no tail calls); pad stack\n  frames for unused locals; swap if/else branches; find Ghidra's files of\n  named functions; time out compiles that hang\n- gen_tiny: translate straight-line code ending in a return or tail call\n- asm_build/match/report: per-file flags from a // cflags: line\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":2.4764538,"total_code":2022408,"matched_code":50084,"matched_code_percent":2.4764538,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1641,"matched_functions_percent":26.239208,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":435,"complete_units":0}},{"timestamp":"2026-10-17T12:53:06Z","commit_sha":"48fd83665d1b9efed8d54220b6b75a2b0310a666","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.4764538,"total_code":2022408,"matched_code":50084,"matched_code_percent":2.4764538,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1641,"matched_functions_percent":26.239208,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":435,"complete_units":0}},{"timestamp":"2026-10-17T11:31:12Z","commit_sha":"73123105f11c7ed102280485513a3781bae6f2f5","commit_message":"Match 261 more functions from Ghidra's output (1389 / 6254)\n\n- gen_ghidra retries non-matching functions with rewrites: numbers that\n  are addresses as address references (lui/addiu, not lui/ori), signed\n  bytes/shorts/ints, float or widened parameters, signed 64-bit values\n- calls to names Ghidra repeats are resolved to the function the\n  original calls and written as func_XXXXXXXX; the linker no longer\n  defines repeated names\n- 1389 functions (1.76% of code) built from C; byte-identical\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T11:15:36Z","commit_sha":"b4323e449990e6014e36f08f228881aaf0c70324","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T10:56:06Z","commit_sha":"d78f2ec8e465cb3368358cda1a9c2b63126ddf39","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T10:45:26Z","commit_sha":"11aaa8f634fb2ef7cc7ad5f1a657ed60058409b1","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T10:45:08Z","commit_sha":"2f6f4df5d24dc8580f4be63e8f725147dae3da37","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T10:39:35Z","commit_sha":"cc32f35b229524be8d34bb5527b725d768416c74","commit_message":"Update README.md","measures":{"fuzzy_match_percent":2.191447,"total_code":2022408,"matched_code":44320,"matched_code_percent":2.191447,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1389,"matched_functions_percent":22.209785,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":374,"complete_units":0}},{"timestamp":"2026-10-17T10:29:33Z","commit_sha":"dcf80ed44a099a040f10418ac72d9d3d863cfd8d","commit_message":"Prepare for ByteMatch: no string fragments, not-a-matching-decomp wording\n\n- gen_ghidra writes string globals by address only, so no game text\n  survives in identifiers\n- README: say this is not a matching decompilation and that ByteMatch\n  counts only byte-identical functions; ByteMatch badges; accurate legal\n  note (no game files or assets; C reconstructed from analysis)\n- PROGRESS.md says the same\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-17T10:29:33Z","commit_sha":"b49e959a4409159fdd9742508396057795db553c","commit_message":"Prepare for ByteMatch: no string fragments, not-a-matching-decomp wording\n\n- gen_ghidra writes string globals by address only, so no game text\n  survives in identifiers\n- README: say this is not a matching decompilation and that ByteMatch\n  counts only byte-identical functions; ByteMatch badges; accurate legal\n  note (no game files or assets; C reconstructed from analysis)\n- PROGRESS.md says the same\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-17T09:58:54Z","commit_sha":"82ffe818494fb71066ec28af738628dc0c7ba65b","commit_message":"Update README.md","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-17T09:55:51Z","commit_sha":"182b3a406de601354edc73ea9e1fab7932b4a362","commit_message":"Update README.md","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-17T09:31:10Z","commit_sha":"b793007cf319b8954db2a3d78577142f9226c280","commit_message":"Update README.md","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-16T22:49:21Z","commit_sha":"78c6d866559e3cc037aca150746a015f80bb890d","commit_message":"Match 149 more functions from Ghidra's output (1128 / 6254)\n\n- gen_ghidra: fit prototypes to the call sites, allow gotos, drop\n  Ghidra's division-check traps, address PTR_/s_ globals and up to six\n  DAT_ globals, give float constants their f, and use the original\n  copies of constants the compiler would place itself\n- match.compare keeps a nop that sits in a delay slot (it hid a wrong\n  tail call)\n- 1128 functions (1.48% of code) built from C; byte-identical\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":1.4772489,"total_code":2022408,"matched_code":29876,"matched_code_percent":1.4772489,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":1128,"matched_functions_percent":18.036457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":356,"complete_units":0}},{"timestamp":"2026-10-16T22:29:29Z","commit_sha":"543d89c86c6bd926ec18ac8afea99e376ce5f700","commit_message":"Match 373 more functions from Ghidra's output; exact relocation checks\n\n- tools/gen_ghidra.py compiles Ghidra's decompilation of the unmatched\n  functions (with gp-relative and absolute globals as D_ symbols, types\n  tried where Ghidra has none) and keeps exact matches in src/ghidra/\n- match.py (and both generators) now fill in relocated fields from the\n  symbols' real addresses instead of masking them, so a wrong call or\n  global counts as a difference\n- report units: one per C file plus one per source group for the rest\n- 979 / 6254 functions (1.13% of code) built from C; byte-identical\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":1.134687,"total_code":2022408,"matched_code":22948,"matched_code_percent":1.1346871,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":979,"matched_functions_percent":15.653981,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":337,"complete_units":0}},{"timestamp":"2026-10-16T22:12:53Z","commit_sha":"ebafaf76f35e50bb322409cf5e966b29a38ccbec","commit_message":"Add objdiff progress report and a workflow uploading it as SLES_508.91_report\n\n- tools/report.py builds objdiff target objects (original code, one unit\n  per source group, plus the data sections) and base objects (the C),\n  and writes report/report.json with objdiff-cli: 606 / 6254 functions\n- .github/workflows/progress.yml uploads the committed report as the\n  artifact SLES_508.91_report on pushes to main, the form ByteMatch and\n  decomp.dev read; CI cannot build without the game's executable\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":0.47329718,"total_code":2022408,"matched_code":9572,"matched_code_percent":0.4732972,"total_data":1767920,"matched_data":0,"matched_data_percent":0,"total_functions":6254,"matched_functions":606,"matched_functions_percent":9.689798,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":155,"complete_units":0}}]