[{"timestamp":"2026-10-15T04:02:27Z","commit_sha":"9a3236bc8169d61fa6493046eceea9089961a71b","commit_message":"Merge pull request #289 from CallanCampos/ov209-musical\n\nComplete overlay 209: match MusPokeDraw_CellCallback, lay out sta_acting.c's data","measures":{"fuzzy_match_percent":82.12648,"total_code":3866114,"matched_code":3007214,"matched_code_percent":77.7839,"total_data":1824556,"matched_data":281736,"matched_data_percent":15.441346,"total_functions":43399,"matched_functions":35082,"matched_functions_percent":80.83596,"complete_code":2483254,"complete_code_percent":64.23126,"complete_data":1083236,"complete_data_percent":59.36984,"total_units":1442,"complete_units":1160}},{"timestamp":"2026-10-15T04:00:40Z","commit_sha":"0bbe245f632879353cb7e2c2b4aa9a90493758ec","commit_message":"Merge pull request #288 from CallanCampos/codex/ssl-certificate-contracts\n\nRecover SSL handshakes and WCM signal contracts","measures":{"fuzzy_match_percent":82.126465,"total_code":3866114,"matched_code":3007042,"matched_code_percent":77.77944,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35081,"matched_functions_percent":80.833664,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T03:42:10Z","commit_sha":"23db20f8d3e598823c2401fa672b577841e4432d","commit_message":"Merge pull request #287 from CallanCampos/ov151-ripple\n\nOverlay 151: record EncEffRipple_Draw's attempts","measures":{"fuzzy_match_percent":82.07106,"total_code":3866114,"matched_code":3006518,"matched_code_percent":77.76589,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35078,"matched_functions_percent":80.826744,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T03:21:57Z","commit_sha":"520769c5024f7362ef758b5b853aa6613d86c36d","commit_message":"Merge pull request #286 from CallanCampos/codex/config-contracts\n\nPreserve config ownership and WCM call contracts","measures":{"fuzzy_match_percent":82.07106,"total_code":3866114,"matched_code":3006518,"matched_code_percent":77.76589,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35078,"matched_functions_percent":80.826744,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T03:16:53Z","commit_sha":"82208ff57b4d364af5eafbff073fba794bc3b5dd","commit_message":"Merge pull request #285 from CallanCampos/ov214-nation\n\nOverlay 214: bring WorldTrade_NationSortListMake to 18 bytes","measures":{"fuzzy_match_percent":82.07028,"total_code":3866114,"matched_code":3006466,"matched_code_percent":77.76455,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35077,"matched_functions_percent":80.82444,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T02:51:42Z","commit_sha":"4025788f17a1c43b3990d327c2c2121381849368","commit_message":"Merge pull request #281 from CallanCampos/codex/badge-polish-names\n\nCorrect GT2, WCM and SSL reconstruction","measures":{"fuzzy_match_percent":82.07003,"total_code":3866114,"matched_code":3006466,"matched_code_percent":77.76455,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35077,"matched_functions_percent":80.82444,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T02:50:43Z","commit_sha":"0d06d48adae7675040007da37f322830c46314b3","commit_message":"Merge pull request #284 from CallanCampos/ov199-pdwacc\n\nComplete overlay 199: lay out pdwacc_disp.c's BG setups","measures":{"fuzzy_match_percent":82.0229,"total_code":3866114,"matched_code":3005356,"matched_code_percent":77.73583,"total_data":1824556,"matched_data":281324,"matched_data_percent":15.418765,"total_functions":43399,"matched_functions":35070,"matched_functions_percent":80.80831,"complete_code":2475512,"complete_code_percent":64.03101,"complete_data":1082760,"complete_data_percent":59.343754,"total_units":1442,"complete_units":1158}},{"timestamp":"2026-10-15T02:36:44Z","commit_sha":"de789a5a0548934f5e54edc325e1897326ff757f","commit_message":"Merge pull request #283 from CallanCampos/ov208-dup\n\nComplete overlay 208: lay out dup_fitting.c's .rodata","measures":{"fuzzy_match_percent":82.0229,"total_code":3866114,"matched_code":3005356,"matched_code_percent":77.73583,"total_data":1824556,"matched_data":281068,"matched_data_percent":15.404734,"total_functions":43399,"matched_functions":35070,"matched_functions_percent":80.80831,"complete_code":2473852,"complete_code_percent":63.98808,"complete_data":1082420,"complete_data_percent":59.325115,"total_units":1442,"complete_units":1157}},{"timestamp":"2026-10-15T02:35:32Z","commit_sha":"aa688f61a2894c130cfe41248cc3bd6dd1f249ea","commit_message":"Merge pull request #282 from CallanCampos/codex/br-result-readability\n\nClarify Battle Recorder result handling","measures":{"fuzzy_match_percent":82.0229,"total_code":3866114,"matched_code":3005356,"matched_code_percent":77.73583,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35070,"matched_functions_percent":80.80831,"complete_code":2457526,"complete_code_percent":63.565792,"complete_data":1081884,"complete_data_percent":59.295742,"total_units":1442,"complete_units":1156}},{"timestamp":"2026-10-15T01:55:30Z","commit_sha":"1f0c0a9059d2804ff98da915f0ec93a7ada440e5","commit_message":"Merge pull request #280 from CallanCampos/main-rows-7\n\nMain: complete g2d_TextCanvas.c, bring ProcessCommand closer","measures":{"fuzzy_match_percent":82.0229,"total_code":3866114,"matched_code":3005356,"matched_code_percent":77.73583,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35070,"matched_functions_percent":80.80831,"complete_code":2457526,"complete_code_percent":63.565792,"complete_data":1081884,"complete_data_percent":59.295742,"total_units":1442,"complete_units":1156}},{"timestamp":"2026-10-15T01:55:11Z","commit_sha":"53dca0f18a6eedc862d9f4442c53c83a74e8c523","commit_message":"Merge pull request #279 from CallanCampos/codex/readability-review\n\nClarify byte offsets in bitmap linear conversion","measures":{"fuzzy_match_percent":82.02251,"total_code":3866114,"matched_code":3005118,"matched_code_percent":77.729675,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35069,"matched_functions_percent":80.80601,"complete_code":2456800,"complete_code_percent":63.547016,"complete_data":1081884,"complete_data_percent":59.295742,"total_units":1442,"complete_units":1155}},{"timestamp":"2026-10-15T01:29:57Z","commit_sha":"0883d038bbe05c6a8d3e43c75837675c8dfa07bc","commit_message":"Merge pull request #278 from CallanCampos/ov280-namein\n\nOverlay 280: record namein.c's data fit","measures":{"fuzzy_match_percent":82.02251,"total_code":3866114,"matched_code":3005118,"matched_code_percent":77.729675,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35069,"matched_functions_percent":80.80601,"complete_code":2456800,"complete_code_percent":63.547016,"complete_data":1081884,"complete_data_percent":59.295742,"total_units":1442,"complete_units":1155}},{"timestamp":"2026-10-15T01:28:07Z","commit_sha":"979bf343a91ae4e677a723b1d34d1ebf1a08fd09","commit_message":"Merge pull request #275 from CallanCampos/main-rows-6\n\nMain: complete three NitroSystem files","measures":{"fuzzy_match_percent":82.02251,"total_code":3866114,"matched_code":3005118,"matched_code_percent":77.729675,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35069,"matched_functions_percent":80.80601,"complete_code":2456800,"complete_code_percent":63.547016,"complete_data":1081884,"complete_data_percent":59.295742,"total_units":1442,"complete_units":1155}},{"timestamp":"2026-10-15T01:17:39Z","commit_sha":"53decfdaa930af63d02c6a204bdbbd9ba494b0ea","commit_message":"Merge pull request #277 from CallanCampos/ov207-psta\n\nComplete overlay 207: lay out p_sta_sub.c's .rodata","measures":{"fuzzy_match_percent":82.02234,"total_code":3866114,"matched_code":3004388,"matched_code_percent":77.71079,"total_data":1824556,"matched_data":280548,"matched_data_percent":15.376234,"total_functions":43399,"matched_functions":35066,"matched_functions_percent":80.799095,"complete_code":2453858,"complete_code_percent":63.470917,"complete_data":1081808,"complete_data_percent":59.291576,"total_units":1442,"complete_units":1152}},{"timestamp":"2026-10-14T16:11:35Z","commit_sha":"92af0f8ebda0bb48abce78886d2fe17e8d8963e5","commit_message":"configure.py: the wibo fork's change is on its main, not a branch\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.59509,"total_code":3866110,"matched_code":2975390,"matched_code_percent":76.96082,"total_data":1824556,"matched_data":278820,"matched_data_percent":15.281527,"total_functions":43398,"matched_functions":34907,"matched_functions_percent":80.434586,"complete_code":2266196,"complete_code_percent":58.616955,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1420,"complete_units":1102}},{"timestamp":"2026-10-14T15:42:55Z","commit_sha":"28aef0bf0cc996dbb63c66db44ee400104b80a2c","commit_message":"Merge remote-tracking branch 'origin/main' into sjis-build","measures":{"fuzzy_match_percent":81.59509,"total_code":3866110,"matched_code":2975390,"matched_code_percent":76.96082,"total_data":1824556,"matched_data":278820,"matched_data_percent":15.281527,"total_functions":43398,"matched_functions":34907,"matched_functions_percent":80.434586,"complete_code":2266196,"complete_code_percent":58.616955,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1420,"complete_units":1102}},{"timestamp":"2026-10-14T15:39:08Z","commit_sha":"9ad93fc7484edbd6a50ed0c49213d545499e01e5","commit_message":"Name the areas after a constant list instead of numbers\n\nThe area records were data/areas/000.json to 408.json, and zones named them by number. They are now\nnamed after their constants in data/constants/areas.txt, in whose order a/0/1/3 has them, as the map\nmatrices are: an area after the first zone whose header names it. The field reads an area's record plus\na variant (AreaData_Create), so the records after an area with seasons (AreaData_HasSeasons) are named\nfor their season, and those after a zone's area in the three other ranges that fieldmap.c picks by\nother state are numbered from it. The 81 records that nothing names keep their number.\nmake_constants.py --areas bootstraps the list, zones name their area by constant, and\nrename_constant.py renames an area's file with it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.59509,"total_code":3866110,"matched_code":2975390,"matched_code_percent":76.96082,"total_data":1824556,"matched_data":278820,"matched_data_percent":15.281527,"total_functions":43398,"matched_functions":34907,"matched_functions_percent":80.434586,"complete_code":2266196,"complete_code_percent":58.616955,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1420,"complete_units":1102}},{"timestamp":"2026-10-14T15:20:40Z","commit_sha":"1fb5c7cec48f5f98f8a76e222d0c833261c167a0","commit_message":"Fix edge cases in the graphics packers\n\nAn audit of the field and Pokémon graphics packers found edits that were packed wrong or rejected:\n\n- Skin weights stored as floats, as Blender writes them, were rejected as blended; only bytes passed.\n- Re-encoding a prop shape's triangles dropped its MTX_RESTORE and MTX_SCALE commands, which builds\n  wrong geometry. Such a shape now stops with an error.\n- An indexed PNG's palette was ignored, so an editor that reorders or compacts it on saving changed the\n  sprite's colors. Indices are now checked against the sprite's palette and remapped by color.\n- A sprite for an empty archive entry, such as a female sprite of a species with none, was ignored. It\n  is now an error.\n- Changing a cry's length left the SDAT header's FILE size (0x2c) stale.\n- A texture saved with other colors under wholly transparent pixels counted as an edit, which re-encodes\n  its palette. Only differences the format shows count now.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.59509,"total_code":3866110,"matched_code":2975390,"matched_code_percent":76.96082,"total_data":1824556,"matched_data":278820,"matched_data_percent":15.281527,"total_functions":43398,"matched_functions":34907,"matched_functions_percent":80.434586,"complete_code":2266196,"complete_code_percent":58.616955,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1420,"complete_units":1102}},{"timestamp":"2026-10-14T14:06:18Z","commit_sha":"f366deee1750a7d6826f0217f681b97682c1a4a7","commit_message":"Merge pull request #251 from Yvonne-Aizawa/decomp/ov011-socl\n\nNitroWiFi SOCL and SOC (overlay 11): fourteen files, five complete","measures":{"fuzzy_match_percent":81.59509,"total_code":3866110,"matched_code":2975390,"matched_code_percent":76.96082,"total_data":1824556,"matched_data":278820,"matched_data_percent":15.281527,"total_functions":43398,"matched_functions":34907,"matched_functions_percent":80.434586,"complete_code":2266196,"complete_code_percent":58.616955,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1420,"complete_units":1102}},{"timestamp":"2026-10-14T13:48:16Z","commit_sha":"a997daa523e56183d2ca61057f2298146dfccd36","commit_message":"Merge pull request #253 from CallanCampos/ov012-rows\n\nOverlay 12: match 12 functions and complete 7 more files","measures":{"fuzzy_match_percent":80.996254,"total_code":3866110,"matched_code":2966036,"matched_code_percent":76.71887,"total_data":1824556,"matched_data":278572,"matched_data_percent":15.267934,"total_functions":43397,"matched_functions":34757,"matched_functions_percent":80.09079,"complete_code":2263664,"complete_code_percent":58.551468,"complete_data":1048172,"complete_data_percent":57.44806,"total_units":1400,"complete_units":1096}},{"timestamp":"2026-10-14T09:32:28Z","commit_sha":"112fbb752a026cf280f972467a24097a995c1eae","commit_message":"Merge pull request #250 from Yvonne-Aizawa/decomp/ov337-dsprot\n\nDS Protect (overlays 337 and 165): complete two files, bring the cipher and flashcart checks closer","measures":{"fuzzy_match_percent":80.98969,"total_code":3866110,"matched_code":2962066,"matched_code_percent":76.61619,"total_data":1824556,"matched_data":278572,"matched_data_percent":15.267934,"total_functions":43397,"matched_functions":34745,"matched_functions_percent":80.06314,"complete_code":2247914,"complete_code_percent":58.144073,"complete_data":1047356,"complete_data_percent":57.40334,"total_units":1400,"complete_units":1089}},{"timestamp":"2026-10-14T05:12:41Z","commit_sha":"4c089d8c69746cd5162e720ebe2c78893dbb5a34","commit_message":"Merge pull request #249 from CallanCampos/ov012-const\n\nOverlay 12: complete map_matrix.c and field_actor_tool.c","measures":{"fuzzy_match_percent":80.98382,"total_code":3866110,"matched_code":2962066,"matched_code_percent":76.61619,"total_data":1824556,"matched_data":278552,"matched_data_percent":15.266837,"total_functions":43397,"matched_functions":34745,"matched_functions_percent":80.06314,"complete_code":2245270,"complete_code_percent":58.07569,"complete_data":1047324,"complete_data_percent":57.40158,"total_units":1400,"complete_units":1087}},{"timestamp":"2026-10-14T05:00:56Z","commit_sha":"b3d2fc8d85fe9f2dc72939feb9d65ea9f1f3c8c6","commit_message":"Merge pull request #248 from CallanCampos/match-main-const\n\nARM9 main: match 11 functions and complete 6 files","measures":{"fuzzy_match_percent":80.98304,"total_code":3866110,"matched_code":2961590,"matched_code_percent":76.603874,"total_data":1824556,"matched_data":278420,"matched_data_percent":15.259603,"total_functions":43397,"matched_functions":34743,"matched_functions_percent":80.058525,"complete_code":2239822,"complete_code_percent":57.934772,"complete_data":1047176,"complete_data_percent":57.393467,"total_units":1400,"complete_units":1085}},{"timestamp":"2026-10-14T03:52:47Z","commit_sha":"d38c60c52a609e7f12f36d58a9c4151ba7b981f8","commit_message":"Merge pull request #247 from CallanCampos/decomp/ov031-sendframe\n\nComplete overlay 31: match IrcLink_SendFrame","measures":{"fuzzy_match_percent":80.98051,"total_code":3866110,"matched_code":2960520,"matched_code_percent":76.576195,"total_data":1824556,"matched_data":278420,"matched_data_percent":15.259603,"total_functions":43397,"matched_functions":34732,"matched_functions_percent":80.03318,"complete_code":2227360,"complete_code_percent":57.61243,"complete_data":1046352,"complete_data_percent":57.348312,"total_units":1400,"complete_units":1079}},{"timestamp":"2026-10-14T03:05:51Z","commit_sha":"2d3262acc0c75ede178e1780a722b5857a2480eb","commit_message":"Merge pull request #246 from CallanCampos/decomp/ov031\n\nOverlay 31: build the infrared link as lib/irc at -O2,p and complete irc_spi.c","measures":{"fuzzy_match_percent":80.98039,"total_code":3866110,"matched_code":2960428,"matched_code_percent":76.57382,"total_data":1824556,"matched_data":278420,"matched_data_percent":15.259603,"total_functions":43397,"matched_functions":34731,"matched_functions_percent":80.030876,"complete_code":2226256,"complete_code_percent":57.583874,"complete_data":1046116,"complete_data_percent":57.33537,"total_units":1400,"complete_units":1078}},{"timestamp":"2026-10-13T22:34:53Z","commit_sha":"80c6dccf126a064a9fc936e9b7445407c0d72a8d","commit_message":"Merge pull request #245 from Yvonne-Aizawa/decomp/ov293\n\nComplete overlay 293: demo3d_data.c's .rodata order","measures":{"fuzzy_match_percent":80.977295,"total_code":3866110,"matched_code":2959896,"matched_code_percent":76.56006,"total_data":1824556,"matched_data":278420,"matched_data_percent":15.259603,"total_functions":43397,"matched_functions":34727,"matched_functions_percent":80.02166,"complete_code":2225580,"complete_code_percent":57.56639,"complete_data":1045692,"complete_data_percent":57.312138,"total_units":1400,"complete_units":1077}},{"timestamp":"2026-10-13T21:27:36Z","commit_sha":"965a484db68b37fbdbb72546de21adb83095f27d","commit_message":"Merge pull request #243 from TeenageMutantNinjaTurtle/match-pass3b\n\nThird pass, continued: complete sixteen overlays, files in twelve more","measures":{"fuzzy_match_percent":80.977295,"total_code":3866110,"matched_code":2959896,"matched_code_percent":76.56006,"total_data":1824556,"matched_data":248988,"matched_data_percent":13.646499,"total_functions":43397,"matched_functions":34727,"matched_functions_percent":80.02166,"complete_code":2225046,"complete_code_percent":57.552574,"complete_data":1016244,"complete_data_percent":55.69816,"total_units":1400,"complete_units":1076}},{"timestamp":"2026-10-13T21:12:43Z","commit_sha":"b8268863315ea8880256d5d86b6d912dc98e11ab","commit_message":"Run macOS ROM checks on current Intel image","measures":{"fuzzy_match_percent":80.89681,"total_code":3866110,"matched_code":2923712,"matched_code_percent":75.62412,"total_data":1824556,"matched_data":246008,"matched_data_percent":13.483171,"total_functions":43397,"matched_functions":34384,"matched_functions_percent":79.231285,"complete_code":2044614,"complete_code_percent":52.885563,"complete_data":994104,"complete_data_percent":54.484707,"total_units":1400,"complete_units":1024}},{"timestamp":"2026-10-13T19:39:03Z","commit_sha":"c53df9e5c49ae6e6a05ea9bdc88cefb3f1bc78ae","commit_message":"Pin wibo with Win32 x87 initialization\n\nUse verified Linux and macOS release binaries from the fuddlesworth/wibo fork at upstream commit 420a75b. Refresh stale cached wibo by SHA256 so local and CI builds use the same guest floating-point state. Both ROM SHA1s verified with a warning-free clean build.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.89393,"total_code":3866110,"matched_code":2922556,"matched_code_percent":75.59423,"total_data":1824556,"matched_data":246008,"matched_data_percent":13.483171,"total_functions":43397,"matched_functions":34379,"matched_functions_percent":79.219765,"complete_code":2018024,"complete_code_percent":52.197792,"complete_data":991688,"complete_data_percent":54.35229,"total_units":1400,"complete_units":1020}},{"timestamp":"2026-10-13T19:22:09Z","commit_sha":"75804a1741511d45098d9c8d49cdbd0470fc384b","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":80.89221,"total_code":3866110,"matched_code":2921604,"matched_code_percent":75.5696,"total_data":1824556,"matched_data":246008,"matched_data_percent":13.483171,"total_functions":43397,"matched_functions":34373,"matched_functions_percent":79.20593,"complete_code":2018024,"complete_code_percent":52.197792,"complete_data":991688,"complete_data_percent":54.35229,"total_units":1400,"complete_units":1020}},{"timestamp":"2026-10-13T19:16:46Z","commit_sha":"217984f69b3d310c595cefc1e4781035012e0069","commit_message":"Merge pull request #240 from TeenageMutantNinjaTurtle/match-pass3\n\nThird pass: file splits in overlays 34 and 215, more overlays completed","measures":{"fuzzy_match_percent":80.886566,"total_code":3866110,"matched_code":2921604,"matched_code_percent":75.5696,"total_data":1824556,"matched_data":245992,"matched_data_percent":13.482293,"total_functions":43397,"matched_functions":34373,"matched_functions_percent":79.20593,"complete_code":2018024,"complete_code_percent":52.197792,"complete_data":991688,"complete_data_percent":54.35229,"total_units":1398,"complete_units":1020}},{"timestamp":"2026-10-13T19:13:10Z","commit_sha":"c72ab7d4da9b6cfa954ec736fe1e48ddb9e6b39f","commit_message":"Decompile dwc_util_screen.c in overlay 182\n\nRecover the three-function blank screen controller and its data and BSS ranges in both versions. Two of three functions match; DWCUtilScreen_Start is four bytes short at its final flag store and is documented. The file name is descriptive because the ROM embeds no source name. Both ROM SHA1s verified with a warning-free Ninja build.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.87839,"total_code":3866110,"matched_code":2915584,"matched_code_percent":75.41389,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34360,"matched_functions_percent":79.17598,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1387,"complete_units":995}},{"timestamp":"2026-10-13T19:01:52Z","commit_sha":"a03081b3f581af04dbb0268208e38bc2011a1ae8","commit_message":"Match Aoss_ParsePsk in overlay 182\n\n62 of 71 functions in dwc_aoss.c now match both versions; the remaining nine are documented. Crc32_MakeTable improves from 13 to 7 differing bytes through local declaration order. Record the parser pointer assignment lever in the matching guide and both skills.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.873886,"total_code":3866110,"matched_code":2915540,"matched_code_percent":75.41276,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34358,"matched_functions_percent":79.17137,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1385,"complete_units":995}},{"timestamp":"2026-10-13T18:58:08Z","commit_sha":"2f699cb5c442d1a380aaca51103c56d5b953263f","commit_message":"Match Aoss_ParseWep in overlay 182\n\n61 of 71 functions in dwc_aoss.c now match both versions; the remaining 10 mismatches are documented. Record the recovered bounds of the next, 66-function access point connection file as a descriptive guess.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.87345,"total_code":3866110,"matched_code":2915356,"matched_code_percent":75.408,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34357,"matched_functions_percent":79.16907,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1385,"complete_units":995}},{"timestamp":"2026-10-13T18:28:28Z","commit_sha":"fb8a8d951b07c816e798b3aaa7ac5a20e63aa0dc","commit_message":"Merge pull request #238 from Yvonne-Aizawa/tools/rodata-order-locals\n\ntools: rodata_order.py lists and checks against a compiled object","measures":{"fuzzy_match_percent":80.87335,"total_code":3866110,"matched_code":2915018,"matched_code_percent":75.39925,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34356,"matched_functions_percent":79.16676,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1385,"complete_units":995}},{"timestamp":"2026-10-13T18:07:48Z","commit_sha":"b28c046fd3419e88a847f90c7577fc0b84129d24","commit_message":"Merge pull request #237 from Yvonne-Aizawa/decomp/ov168\n\nOverlay 168: match 3 of the 15 documented nonmatching functions","measures":{"fuzzy_match_percent":80.87335,"total_code":3866110,"matched_code":2915018,"matched_code_percent":75.39925,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34356,"matched_functions_percent":79.16676,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1385,"complete_units":995}},{"timestamp":"2026-10-13T16:52:25Z","commit_sha":"ea44027d85d94480e939b784ddebfb9881564932","commit_message":"Merge pull request #236 from Yvonne-Aizawa/decomp/ov011\n\nNitroWiFi: decompile cps.c (overlay 11)","measures":{"fuzzy_match_percent":80.87253,"total_code":3866110,"matched_code":2913366,"matched_code_percent":75.35652,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43397,"matched_functions":34353,"matched_functions_percent":79.15985,"complete_code":1943482,"complete_code_percent":50.269707,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1385,"complete_units":995}},{"timestamp":"2026-10-13T16:52:14Z","commit_sha":"556431a0806e245eadf9355cdced46b49ac60991","commit_message":"Merge pull request #235 from fascix/codex/ov036-overlay-recovery\n\nRecover the remaining source files of overlay 036","measures":{"fuzzy_match_percent":80.50734,"total_code":3865990,"matched_code":2904600,"matched_code_percent":75.13211,"total_data":1824556,"matched_data":243700,"matched_data_percent":13.356674,"total_functions":43396,"matched_functions":34255,"matched_functions_percent":78.935844,"complete_code":1943482,"complete_code_percent":50.27126,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1384,"complete_units":995}},{"timestamp":"2026-10-13T15:57:24Z","commit_sha":"fffcc0f3ca3d170cb4f000acd370d643ae6a176b","commit_message":"Complete Nitro CP context save and restore\n\nRecover CP_SaveContext and CPi_RestoreContext in cp_context.c. Both ARM functions match Black 2 and White 2, and both ROM SHA1 checks pass without compiler warnings.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.50809,"total_code":3865990,"matched_code":2904600,"matched_code_percent":75.13211,"total_data":1824556,"matched_data":243572,"matched_data_percent":13.349658,"total_functions":43396,"matched_functions":34255,"matched_functions_percent":78.935844,"complete_code":1943482,"complete_code_percent":50.27126,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1329,"complete_units":995}},{"timestamp":"2026-10-13T15:51:40Z","commit_sha":"e94f31687d5e8632dc470d8a1d4faff945c7e62a","commit_message":"Complete Nitro CARD pull-out handling\n\nRecover all 11 functions in card_pull_out.c and register the original text and BSS ranges for both versions. The two Thumb-to-ARM jump stubs include their ROM padding NOPs; the probe reports a size difference because its original symbols exclude that padding, while both complete ARM9 modules and ROM SHA1s match. Document the trampoline spelling in the matching guide and synchronized levers.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.50489,"total_code":3865990,"matched_code":2904476,"matched_code_percent":75.12891,"total_data":1824556,"matched_data":243572,"matched_data_percent":13.349658,"total_functions":43396,"matched_functions":34253,"matched_functions_percent":78.93124,"complete_code":1943358,"complete_code_percent":50.268055,"complete_data":937284,"complete_data_percent":51.370525,"total_units":1328,"complete_units":994}},{"timestamp":"2026-10-13T15:27:59Z","commit_sha":"4b730b91c74ea2a14ad17aabee69f665846b805f","commit_message":"Match Aoss_Decrypt in overlay 182\n\n60 of 71 functions in dwc_aoss.c now match both versions. The remaining 11 mismatches are documented in docs/nonmatching-functions.md; the checksum compare lever is recorded in the matching guide.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.496346,"total_code":3865990,"matched_code":2904170,"matched_code_percent":75.120995,"total_data":1824556,"matched_data":243560,"matched_data_percent":13.349001,"total_functions":43396,"matched_functions":34246,"matched_functions_percent":78.91511,"complete_code":1943024,"complete_code_percent":50.25942,"complete_data":937272,"complete_data_percent":51.36987,"total_units":1326,"complete_units":993}},{"timestamp":"2026-10-13T15:25:56Z","commit_sha":"f90fadd1ed1788c3ed47368c43d9c8fb9eb49889","commit_message":"Complete NNS G3D mem.c\n\nRecover the four render and animation allocation wrappers in NitroSystem g3d/mem.c. All four functions match in Black 2 and White 2, and the file is linked complete in both versions.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.496346,"total_code":3865990,"matched_code":2904034,"matched_code_percent":75.11748,"total_data":1824556,"matched_data":243560,"matched_data_percent":13.349001,"total_functions":43396,"matched_functions":34245,"matched_functions_percent":78.9128,"complete_code":1943024,"complete_code_percent":50.25942,"complete_data":937272,"complete_data_percent":51.36987,"total_units":1326,"complete_units":993}},{"timestamp":"2026-10-13T15:08:26Z","commit_sha":"1802c8b42f1f9dcf66008b3be2682491488658c7","commit_message":"Complete br_proc_sys.c\n\nAll 11 functions match in both versions. Mark the file complete in both overlays and remove the BrProcSys_Pop mismatch row. Document MWCC pointer arithmetic as the matching lever.\n\nCo-Authored-By: Codex <noreply@openai.com>","measures":{"fuzzy_match_percent":80.495056,"total_code":3865990,"matched_code":2903984,"matched_code_percent":75.11618,"total_data":1824556,"matched_data":243560,"matched_data_percent":13.349001,"total_functions":43396,"matched_functions":34241,"matched_functions_percent":78.90359,"complete_code":1942974,"complete_code_percent":50.258125,"complete_data":937272,"complete_data_percent":51.36987,"total_units":1326,"complete_units":992}},{"timestamp":"2026-10-13T14:56:41Z","commit_sha":"33a7a3025bde49a26871f4051ab9b94bdf7172fe","commit_message":"Merge remote-tracking branch 'origin/main' into pr230-resolve","measures":{"fuzzy_match_percent":80.49501,"total_code":3865990,"matched_code":2903902,"matched_code_percent":75.11406,"total_data":1824556,"matched_data":243560,"matched_data_percent":13.349001,"total_functions":43396,"matched_functions":34240,"matched_functions_percent":78.901276,"complete_code":1942216,"complete_code_percent":50.238514,"complete_data":937144,"complete_data_percent":51.362854,"total_units":1326,"complete_units":991}},{"timestamp":"2026-10-13T14:46:27Z","commit_sha":"bf291df05bfff1ecae030c227e158659448cd643","commit_message":"Merge pull request #230 from TeenageMutantNinjaTurtle/match-pass2-a\n\nSecond pass: complete 28 overlays, closer matches in fourteen more","measures":{"fuzzy_match_percent":80.4931,"total_code":3865990,"matched_code":2903902,"matched_code_percent":75.11406,"total_data":1824556,"matched_data":243560,"matched_data_percent":13.349001,"total_functions":43396,"matched_functions":34240,"matched_functions_percent":78.901276,"complete_code":1942216,"complete_code_percent":50.238514,"complete_data":937144,"complete_data_percent":51.362854,"total_units":1326,"complete_units":991}},{"timestamp":"2026-10-13T14:28:47Z","commit_sha":"2a31c9e860e5defb4a3399d6966603959b003505","commit_message":"Fix compiler warnings","measures":{"fuzzy_match_percent":80.31879,"total_code":3865990,"matched_code":2806250,"matched_code_percent":72.588135,"total_data":1824556,"matched_data":232172,"matched_data_percent":12.72485,"total_functions":43396,"matched_functions":33952,"matched_functions_percent":78.237625,"complete_code":1551236,"complete_code_percent":40.125195,"complete_data":901712,"complete_data_percent":49.4209,"total_units":1322,"complete_units":913}},{"timestamp":"2026-10-13T12:29:33Z","commit_sha":"0558d5c664e639518952c793386ed5de66a805f5","commit_message":"Merge pull request #234 from Yvonne-Aizawa/codex/claude-configs\n\nAdd Codex project files","measures":{"fuzzy_match_percent":80.31879,"total_code":3865990,"matched_code":2806250,"matched_code_percent":72.588135,"total_data":1824556,"matched_data":232172,"matched_data_percent":12.72485,"total_functions":43396,"matched_functions":33952,"matched_functions_percent":78.237625,"complete_code":1551236,"complete_code_percent":40.125195,"complete_data":901712,"complete_data_percent":49.4209,"total_units":1322,"complete_units":913}},{"timestamp":"2026-10-13T12:27:57Z","commit_sha":"f8529646f0c904501840bbf2b59fae5e328786a2","commit_message":"Merge pull request #233 from Yvonne-Aizawa/decomp/ov182\n\nStart overlay 182: DWC Wi-Fi settings utility (lib/dwcutil, MWCC 2.0)","measures":{"fuzzy_match_percent":80.31879,"total_code":3865990,"matched_code":2806250,"matched_code_percent":72.588135,"total_data":1824556,"matched_data":232172,"matched_data_percent":12.72485,"total_functions":43396,"matched_functions":33952,"matched_functions_percent":78.237625,"complete_code":1551236,"complete_code_percent":40.125195,"complete_data":901712,"complete_data_percent":49.4209,"total_units":1322,"complete_units":913}},{"timestamp":"2026-10-13T12:26:49Z","commit_sha":"9da74db792756a1c3157024a0a3041cb7532bc79","commit_message":"Merge pull request #229 from Yvonne-Aizawa/decomp/ov169\n\nDecompile overlay 169 (battle field, side and position effects, btlv_scd.c)","measures":{"fuzzy_match_percent":80.02501,"total_code":3865990,"matched_code":2800148,"matched_code_percent":72.4303,"total_data":1824556,"matched_data":232096,"matched_data_percent":12.720683,"total_functions":43396,"matched_functions":33871,"matched_functions_percent":78.05097,"complete_code":1549434,"complete_code_percent":40.078583,"complete_data":901592,"complete_data_percent":49.41432,"total_units":1316,"complete_units":911}},{"timestamp":"2026-10-13T00:28:47Z","commit_sha":"964bb8b20513b87410455144f5292d8996966cff","commit_message":"docs: shorten README and separate build details (#228)\n\nReduce the README from 1,133 to 313 words and move platform setup and advanced build options into docs/building.md.\n\nDocumentation validation: relative links, heading anchors, unchanged ROM hashes, configure.py option names and whitespace checks passed. Only Markdown files changed.","measures":{"fuzzy_match_percent":79.48134,"total_code":3865990,"matched_code":2779708,"matched_code_percent":71.90158,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43396,"matched_functions":32601,"matched_functions_percent":75.124435,"complete_code":1529428,"complete_code_percent":39.561096,"complete_data":896596,"complete_data_percent":49.140503,"total_units":1306,"complete_units":901}},{"timestamp":"2026-10-13T00:16:56Z","commit_sha":"35cd8d8b122cf9dd530c3a3f62d57753c89315eb","commit_message":"Merge resolved decompilation PRs #199, #200, #217, #220, #221, #222, #225 and #226 (#227)\n\nAll eight original PR heads are preserved in the integration ancestry. Shared documentation conflicts are resolved and the current PhotoSign API is retained.\n\nValidated by CI: Compile src/ and lib/, Build b2_us, and Build w2_us all passed; both ROMs rebuilt byte for byte. Local checks also passed all 2,476 source builds and all 30 changed-file builds.","measures":{"fuzzy_match_percent":79.48134,"total_code":3865990,"matched_code":2779708,"matched_code_percent":71.90158,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43396,"matched_functions":32601,"matched_functions_percent":75.124435,"complete_code":1529428,"complete_code_percent":39.561096,"complete_data":896596,"complete_data_percent":49.140503,"total_units":1306,"complete_units":901}},{"timestamp":"2026-10-12T23:33:05Z","commit_sha":"b668f7955d7afd05821c5498423f9d4c9d7eee2d","commit_message":"Merge pull request #224 from TeenageMutantNinjaTurtle/match-ov315-zenkoku-zukan-award\n\nComplete overlay 315: match zenkoku_zukan_award.c's last three functions","measures":{"fuzzy_match_percent":79.42157,"total_code":3865990,"matched_code":2770418,"matched_code_percent":71.661285,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32561,"matched_functions_percent":75.03053,"complete_code":1510574,"complete_code_percent":39.073406,"complete_data":894504,"complete_data_percent":49.025845,"total_units":1306,"complete_units":893}},{"timestamp":"2026-10-12T23:32:41Z","commit_sha":"21e00282b2008dfcb5d8dca2a5df0435d2e87250","commit_message":"Merge pull request #223 from TeenageMutantNinjaTurtle/match-ov096-gym-driftveil\n\nComplete overlay 96: match gym_driftveil.c's last two functions","measures":{"fuzzy_match_percent":79.42053,"total_code":3865990,"matched_code":2769598,"matched_code_percent":71.640076,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32558,"matched_functions_percent":75.02362,"complete_code":1508356,"complete_code_percent":39.016037,"complete_data":894348,"complete_data_percent":49.017296,"total_units":1306,"complete_units":892}},{"timestamp":"2026-10-12T23:31:25Z","commit_sha":"18d3272551fc7c092494dd7703366b50a80e5f3e","commit_message":"Merge pull request #218 from TeenageMutantNinjaTurtle/match-ov024-zone-entity\n\nComplete overlay 24 and match overlay 25's place picker: ZoneBGEntity is 2-aligned","measures":{"fuzzy_match_percent":79.42005,"total_code":3865990,"matched_code":2768692,"matched_code_percent":71.61664,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32556,"matched_functions_percent":75.019005,"complete_code":1504294,"complete_code_percent":38.910965,"complete_data":891476,"complete_data_percent":48.85989,"total_units":1306,"complete_units":891}},{"timestamp":"2026-10-12T23:31:09Z","commit_sha":"9bf7ad39f1ddae508c0e4f60ec6556c99be16869","commit_message":"Merge pull request #215 from TeenageMutantNinjaTurtle/match-ov295-game-clear-save\n\nComplete overlay 295: match GameClearSave_Main","measures":{"fuzzy_match_percent":79.41864,"total_code":3865990,"matched_code":2768000,"matched_code_percent":71.59874,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32553,"matched_functions_percent":75.0121,"complete_code":1503632,"complete_code_percent":38.89384,"complete_data":891012,"complete_data_percent":48.834454,"total_units":1306,"complete_units":890}},{"timestamp":"2026-10-12T23:30:49Z","commit_sha":"a7b09d00f55be21d3ccb497edbb5e3857c04ffdb","commit_message":"Merge pull request #211 from TeenageMutantNinjaTurtle/rows-closer-ov023-ov086-ov150\n\nCloser matches in overlays 23, 86 and 150, and eight rows updated","measures":{"fuzzy_match_percent":79.41831,"total_code":3865990,"matched_code":2767376,"matched_code_percent":71.582596,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32552,"matched_functions_percent":75.009796,"complete_code":1502138,"complete_code_percent":38.855194,"complete_data":890900,"complete_data_percent":48.82832,"total_units":1306,"complete_units":889}},{"timestamp":"2026-10-12T23:17:20Z","commit_sha":"5cb0e6b5c21b5c3b5401242da4fb026711b88574","commit_message":"Merge pull request #219 from TeenageMutantNinjaTurtle/match-ov313-th-award\n\nComplete overlay 313: match th_award.c's last two functions","measures":{"fuzzy_match_percent":79.41543,"total_code":3865990,"matched_code":2767376,"matched_code_percent":71.582596,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32552,"matched_functions_percent":75.009796,"complete_code":1502138,"complete_code_percent":38.855194,"complete_data":890900,"complete_data_percent":48.82832,"total_units":1306,"complete_units":889}},{"timestamp":"2026-10-12T23:11:28Z","commit_sha":"17fef218a3c5ab845c73dd02a83d5c363719bb86","commit_message":"Merge pull request #214 from TeenageMutantNinjaTurtle/match-ov140-config-panel\n\nComplete overlay 140: match ConfigPanelAppBar_Main","measures":{"fuzzy_match_percent":79.41432,"total_code":3865990,"matched_code":2766288,"matched_code_percent":71.55445,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32550,"matched_functions_percent":75.00519,"complete_code":1499294,"complete_code_percent":38.78163,"complete_data":890668,"complete_data_percent":48.8156,"total_units":1306,"complete_units":888}},{"timestamp":"2026-10-12T23:10:20Z","commit_sha":"1ba89d4f244975ea003af07829d41fd170e63fd1","commit_message":"Merge pull request #216 from TeenageMutantNinjaTurtle/match-ov316-psel\n\nComplete overlay 316: match PselText_PrintType","measures":{"fuzzy_match_percent":79.41394,"total_code":3865990,"matched_code":2765780,"matched_code_percent":71.54131,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32549,"matched_functions_percent":75.00288,"complete_code":1491206,"complete_code_percent":38.572422,"complete_data":889816,"complete_data_percent":48.768906,"total_units":1306,"complete_units":887}},{"timestamp":"2026-10-12T23:08:57Z","commit_sha":"7f53c53c5e5909a5270d42ea9a074cbafa826038","commit_message":"Merge pull request #209 from TeenageMutantNinjaTurtle/match-ov210-musical-system\n\nComplete overlay 210: match MusicalSystem_LoadProgramData","measures":{"fuzzy_match_percent":79.4134,"total_code":3865990,"matched_code":2765548,"matched_code_percent":71.53532,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32548,"matched_functions_percent":75.00058,"complete_code":1480930,"complete_code_percent":38.306618,"complete_data":889360,"complete_data_percent":48.74391,"total_units":1306,"complete_units":886}},{"timestamp":"2026-10-12T22:57:46Z","commit_sha":"b20bf7027e4db0a478d9b11991f510ad1e7ff3d1","commit_message":"Merge pull request #212 from TeenageMutantNinjaTurtle/match-ov070-oekaki\n\nComplete overlay 70: match Oekaki_UpdateTouch","measures":{"fuzzy_match_percent":79.41336,"total_code":3865990,"matched_code":2765248,"matched_code_percent":71.52755,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32547,"matched_functions_percent":74.99827,"complete_code":1480236,"complete_code_percent":38.288666,"complete_data":889340,"complete_data_percent":48.74282,"total_units":1306,"complete_units":885}},{"timestamp":"2026-10-12T22:56:03Z","commit_sha":"a06c5d67117fc6b8cad2f0ee2d2e693aea27f699","commit_message":"Merge pull request #213 from TeenageMutantNinjaTurtle/match-ov166-battle-return\n\nComplete overlay 166: match EventBattleReturn_Main","measures":{"fuzzy_match_percent":79.413345,"total_code":3865990,"matched_code":2764716,"matched_code_percent":71.51379,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32546,"matched_functions_percent":74.995964,"complete_code":1470802,"complete_code_percent":38.04464,"complete_data":888116,"complete_data_percent":48.675735,"total_units":1306,"complete_units":884}},{"timestamp":"2026-10-12T22:53:35Z","commit_sha":"78b5ab7458660efd8f2788a3d579e3e7e4ff69a4","commit_message":"Merge pull request #210 from TeenageMutantNinjaTurtle/match-ov193-trade-demo-common\n\nComplete overlay 193: match PokemonTradeDemoCommon_InitSide","measures":{"fuzzy_match_percent":79.41306,"total_code":3865990,"matched_code":2763648,"matched_code_percent":71.48616,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32545,"matched_functions_percent":74.99367,"complete_code":1468810,"complete_code_percent":37.993114,"complete_data":887992,"complete_data_percent":48.668938,"total_units":1306,"complete_units":883}},{"timestamp":"2026-10-12T22:53:04Z","commit_sha":"1f93e2fb52fc6056bed85cc0e57648d70b5e050b","commit_message":"Merge pull request #207 from TeenageMutantNinjaTurtle/match-ov177-irc-sync-check\n\nComplete overlay 177: match IrcSyncCheck_CompareTraces","measures":{"fuzzy_match_percent":79.41278,"total_code":3865990,"matched_code":2763456,"matched_code_percent":71.4812,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32544,"matched_functions_percent":74.991356,"complete_code":1466552,"complete_code_percent":37.934708,"complete_data":886992,"complete_data_percent":48.61413,"total_units":1306,"complete_units":882}},{"timestamp":"2026-10-12T22:52:19Z","commit_sha":"d3e18376c8bc3f49fe70eff553e8e9e1cc94c787","commit_message":"Merge pull request #205 from TeenageMutantNinjaTurtle/match-ov117-plasma-frigate\n\nComplete overlay 117: gimmick_plasma_frigate.c's .rodata order","measures":{"fuzzy_match_percent":79.41234,"total_code":3865990,"matched_code":2763298,"matched_code_percent":71.47711,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32543,"matched_functions_percent":74.98906,"complete_code":1459240,"complete_code_percent":37.74557,"complete_data":886520,"complete_data_percent":48.588257,"total_units":1306,"complete_units":881}},{"timestamp":"2026-10-12T22:51:47Z","commit_sha":"a427eb8ba55445b58ef4923aa1060f88e923d944","commit_message":"Merge pull request #204 from TeenageMutantNinjaTurtle/match-ov089-pleasure-boat\n\nComplete overlay 89: match PleasureBoat_SetUpRooms","measures":{"fuzzy_match_percent":79.41234,"total_code":3865990,"matched_code":2763298,"matched_code_percent":71.47711,"total_data":1824556,"matched_data":228188,"matched_data_percent":12.506495,"total_functions":43397,"matched_functions":32543,"matched_functions_percent":74.98906,"complete_code":1455058,"complete_code_percent":37.637398,"complete_data":884308,"complete_data_percent":48.467026,"total_units":1306,"complete_units":880}},{"timestamp":"2026-10-12T22:43:20Z","commit_sha":"0db0c0cf83035ff4ff1bf8bd5f59c73e60701aca","commit_message":"Merge pull request #208 from TeenageMutantNinjaTurtle/match-ov174-ircbattlematch\n\nComplete overlay 174: match IrcBattleMatch_StateStartNet","measures":{"fuzzy_match_percent":79.40849,"total_code":3865990,"matched_code":2762782,"matched_code_percent":71.46376,"total_data":1824556,"matched_data":227480,"matched_data_percent":12.46769,"total_functions":43397,"matched_functions":32542,"matched_functions_percent":74.98675,"complete_code":1454078,"complete_code_percent":37.61205,"complete_data":883600,"complete_data_percent":48.42822,"total_units":1306,"complete_units":879}},{"timestamp":"2026-10-12T22:42:27Z","commit_sha":"2b423818bd59c3d9aec2e88a52d502ac008cadb0","commit_message":"Merge pull request #206 from TeenageMutantNinjaTurtle/match-ov128-passing-vehicles\n\nComplete overlay 128: match gimmick_passing_vehicles.c","measures":{"fuzzy_match_percent":79.407684,"total_code":3865990,"matched_code":2762526,"matched_code_percent":71.45714,"total_data":1824556,"matched_data":227480,"matched_data_percent":12.46769,"total_functions":43397,"matched_functions":32541,"matched_functions_percent":74.98444,"complete_code":1445348,"complete_code_percent":37.386234,"complete_data":883012,"complete_data_percent":48.395996,"total_units":1306,"complete_units":878}},{"timestamp":"2026-10-12T22:41:35Z","commit_sha":"ad5fce6bbeef53d856befc760fd5a49e78e2fc4e","commit_message":"Merge pull request #203 from TeenageMutantNinjaTurtle/match-ov100-gym-virbank\n\nComplete overlay 100: match gym_virbank.c's last function","measures":{"fuzzy_match_percent":79.4073,"total_code":3865990,"matched_code":2762238,"matched_code_percent":71.44969,"total_data":1824556,"matched_data":227216,"matched_data_percent":12.453221,"total_functions":43397,"matched_functions":32540,"matched_functions_percent":74.98214,"complete_code":1444478,"complete_code_percent":37.363728,"complete_data":882716,"complete_data_percent":48.37977,"total_units":1306,"complete_units":877}},{"timestamp":"2026-10-12T22:40:45Z","commit_sha":"6d91aa847b05f9508aa314346e6e4ce710579c4b","commit_message":"Merge pull request #202 from TeenageMutantNinjaTurtle/match-ov010-event-make\n\nComplete overlay 10: match event_make.c's battle event","measures":{"fuzzy_match_percent":79.40678,"total_code":3865990,"matched_code":2761886,"matched_code_percent":71.44059,"total_data":1824556,"matched_data":227216,"matched_data_percent":12.453221,"total_functions":43397,"matched_functions":32539,"matched_functions_percent":74.979836,"complete_code":1443446,"complete_code_percent":37.337036,"complete_data":880572,"complete_data_percent":48.26226,"total_units":1306,"complete_units":876}},{"timestamp":"2026-10-12T22:35:12Z","commit_sha":"1a2ef51e1d671ff2a7217818ffdc65356c07a392","commit_message":"Merge pull request #201 from TeenageMutantNinjaTurtle/round4b-finish-173-259-268\n\nFinish overlays 173, 259 and 268: Wi-Fi Club match board, Xtransceiver calls, Battle Recorder procs","measures":{"fuzzy_match_percent":79.40528,"total_code":3865990,"matched_code":2760950,"matched_code_percent":71.41638,"total_data":1824556,"matched_data":227216,"matched_data_percent":12.453221,"total_functions":43397,"matched_functions":32538,"matched_functions_percent":74.97753,"complete_code":1442268,"complete_code_percent":37.30656,"complete_data":880560,"complete_data_percent":48.261604,"total_units":1306,"complete_units":875}},{"timestamp":"2026-10-12T22:28:21Z","commit_sha":"0cfc0de938bc202791ac425dd2036043333a3b04","commit_message":"Move Pokemon cry volumes into data JSON","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T22:18:12Z","commit_sha":"904e69a36da5ef0d5f647b095a2e216b7b4ef66d","commit_message":"Correct Pokemon sprite layouts and deduplicate musical assets","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T22:11:41Z","commit_sha":"230b89a6d43871148daa7b3bf73349de570eba2a","commit_message":"Extract editable Pokemon graphics and cries","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T21:37:16Z","commit_sha":"0701030ab4aa60c773b3bae83e0839abaf4b275e","commit_message":"Name field graphics and remove Nitro sidecars","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T21:11:27Z","commit_sha":"496f9c085efeaf8fa756d6704f1a0d563ad950ad","commit_message":"Reject unapplied GLB object edits","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T21:05:37Z","commit_sha":"fb2b25502337acda7bc87b225cff90a200358d03","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T21:01:56Z","commit_sha":"295c40e3bdf19a44255f14df2fe2c275d6d767a5","commit_message":"Merge pull request #198 from manta89640/twl-photo-sign\n\nDecompile the DSi photo signature code in the LTD autoload","measures":{"fuzzy_match_percent":77.77616,"total_code":3865990,"matched_code":2699810,"matched_code_percent":69.83489,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31981,"matched_functions_percent":73.69403,"complete_code":1425234,"complete_code_percent":36.86595,"complete_data":879380,"complete_data_percent":48.196934,"total_units":1297,"complete_units":866}},{"timestamp":"2026-10-12T21:01:16Z","commit_sha":"2160bf6da9e5823ae9f2db7316cfb3b8f72b446f","commit_message":"Merge pull request #197 from manta89640/nitro-mb\n\nNitroSDK multiboot: match 14 more functions in overlay 181","measures":{"fuzzy_match_percent":77.71232,"total_code":3865990,"matched_code":2697342,"matched_code_percent":69.77106,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31959,"matched_functions_percent":73.64334,"complete_code":1422766,"complete_code_percent":36.802113,"complete_data":879232,"complete_data_percent":48.18882,"total_units":1294,"complete_units":863}},{"timestamp":"2026-10-12T20:58:17Z","commit_sha":"db4ecc55668968d54c5a236bd5b00b82c799efed","commit_message":"Extract editable field prop texture PNGs","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:54:44Z","commit_sha":"cec3a7f66f28bebc479fd4e88d0720e9ce429e5c","commit_message":"Handle Blender embedded images and editable terrain split tables","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:47:40Z","commit_sha":"2e6409398009a2c187a4e69b0fecff0cff6696f8","commit_message":"Show compatible textures in remaining map GLBs","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:41:31Z","commit_sha":"e8a49565eb31d0f347332b9840ebaacca5503668","commit_message":"Pack map model texture and palette bindings","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:31:31Z","commit_sha":"4c41cae908d19acfdecff53e7005716a97ce94dd","commit_message":"Pack edited map model topology from GLB","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:22:11Z","commit_sha":"faf067fd32021da6831350d485d33d889bf7af6e","commit_message":"Expose editable field map collision terrain","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:11:36Z","commit_sha":"104a1e9eccb03ce89e5ab20b2e60f7dc2aee2672","commit_message":"Use canonical map texture PNGs in GLB models","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:08:08Z","commit_sha":"a34435b6347bf9c3c4b70cddb7694f4f81df3607","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:06:03Z","commit_sha":"a43ee46ca13c841c25d2e0446ffe5fe08d1f3e44","commit_message":"Merge pull request #195 from manta89640/nitro-crypto\n\nComplete rc4.c: CRYPTO_RC4Encrypt as an asm function","measures":{"fuzzy_match_percent":77.67673,"total_code":3865990,"matched_code":2691946,"matched_code_percent":69.631485,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31934,"matched_functions_percent":73.58573,"complete_code":1421634,"complete_code_percent":36.77283,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":861}},{"timestamp":"2026-10-12T20:04:44Z","commit_sha":"73ab0e4f670dc8fc180cb7bb71dc278313140ac8","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T20:00:49Z","commit_sha":"6161700831bc81a7262a22b056252dbab5d93061","commit_message":"Merge pull request #196 from manta89640/tools-ltd-probe\n\ntools: let compiler_probe.py probe the LTD autoload","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:57:30Z","commit_sha":"02896ec30ab2b15f3a59f0c2cbad3840c41b1218","commit_message":"Clarify GLB mapping metadata","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:56:29Z","commit_sha":"696bd94c3be8ce6faa84577de0fff4b516a79992","commit_message":"Expose field props as editable GLB nodes","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:51:33Z","commit_sha":"ec204d1ee9b5819a0efa7b7956718d9377b1828e","commit_message":"Store map models as single-file GLB assets","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:47:42Z","commit_sha":"24b32ff69a990a15cc991dfbe40298dc01e744c1","commit_message":"Source field texture sets as editable PNGs","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:28:50Z","commit_sha":"aff3fed8c473272076685b935be57fa034eaa3e0","commit_message":"Roundtrip transformed map model positions","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:26:06Z","commit_sha":"8b7d80f9a9afee564ba2462a7bfe5a32eb2f3ddd","commit_message":"Source all map models as glTF with shared texture previews","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:15:28Z","commit_sha":"e858bb4e98bd36c5e70ba3b38710fc98a3b4401b","commit_message":"Expand glTF map model pilot to a textured building","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T19:05:07Z","commit_sha":"10464068a71272b80a8154d45ef6ed58ffa3cf04","commit_message":"Record overlay progress and close completed issues","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:59:04Z","commit_sha":"05ce540b5004518184ecb4c884fda33792d0cd7e","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:58:24Z","commit_sha":"6d932c287dfc96c148bbd733fb4a8cad84f63013","commit_message":"Merge pull request #194 from Yvonne-Aizawa/decomp/ov311-complete\n\nMatch three more functions of un_select.c (overlay 311)","measures":{"fuzzy_match_percent":77.67452,"total_code":3865990,"matched_code":2691826,"matched_code_percent":69.62837,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31933,"matched_functions_percent":73.58343,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:54:46Z","commit_sha":"43c96e98d8d695a8c6fc8132d7f3bac3dd667926","commit_message":"Clarify partial decomp PR readiness","measures":{"fuzzy_match_percent":77.673164,"total_code":3865990,"matched_code":2690940,"matched_code_percent":69.60546,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31930,"matched_functions_percent":73.576515,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:41:19Z","commit_sha":"43b90841882d1d19e3766a10d4386a793a13d21f","commit_message":"data: split area and town map records into individual files","measures":{"fuzzy_match_percent":77.673164,"total_code":3865990,"matched_code":2690940,"matched_code_percent":69.60546,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31930,"matched_functions_percent":73.576515,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:33:29Z","commit_sha":"9fe5d75e34aa78dc8595d885a205a0b834f624fa","commit_message":"docs: claim overlay issues before decompilation","measures":{"fuzzy_match_percent":77.673164,"total_code":3865990,"matched_code":2690940,"matched_code_percent":69.60546,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31930,"matched_functions_percent":73.576515,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T18:13:00Z","commit_sha":"953752079491de8366745e972a902e6459eb4f80","commit_message":"Merge pull request #70 from TeenageMutantNinjaTurtle/round4-fifteen-overlays\n\nDecompile fifteen overlays: options, Trainer Card, Pal Pad, Pokédex lists, demos, manual","measures":{"fuzzy_match_percent":77.673164,"total_code":3865990,"matched_code":2690940,"matched_code_percent":69.60546,"total_data":1824556,"matched_data":224524,"matched_data_percent":12.305678,"total_functions":43397,"matched_functions":31930,"matched_functions_percent":73.576515,"complete_code":1421386,"complete_code_percent":36.766415,"complete_data":879204,"complete_data_percent":48.187286,"total_units":1294,"complete_units":860}},{"timestamp":"2026-10-12T17:28:33Z","commit_sha":"61a102546be7eac1a9f2a35b222def222b36ec82","commit_message":"Merge pull request #69 from Yvonne-Aizawa/decomp/ov012-small-matches\n\nComplete season_form.c; inline the gift Pokémon maker into ov012","measures":{"fuzzy_match_percent":73.33516,"total_code":3865990,"matched_code":2528464,"matched_code_percent":65.402756,"total_data":1824556,"matched_data":206536,"matched_data_percent":11.319796,"total_functions":43397,"matched_functions":30310,"matched_functions_percent":69.84354,"complete_code":1318204,"complete_code_percent":34.09745,"complete_data":866920,"complete_data_percent":47.514023,"total_units":1237,"complete_units":807}},{"timestamp":"2026-10-12T17:26:41Z","commit_sha":"fb1cf7afc56e2d1fb3ab1b565161a8b1647ac704","commit_message":"Merge pull request #68 from fascix/codex/ov036-gap-24-fns-20261012\n\nDecompile shortcut_menu.c in overlay 36","measures":{"fuzzy_match_percent":73.32889,"total_code":3865990,"matched_code":2528220,"matched_code_percent":65.39645,"total_data":1824556,"matched_data":206536,"matched_data_percent":11.319796,"total_functions":43397,"matched_functions":30309,"matched_functions_percent":69.84123,"complete_code":1317960,"complete_code_percent":34.09114,"complete_data":866920,"complete_data_percent":47.514023,"total_units":1237,"complete_units":806}},{"timestamp":"2026-10-12T16:29:46Z","commit_sha":"c55dbfc5591c7f9bbfbec456fad825a13f88fd41","commit_message":"Merge pull request #67 from TeenageMutantNinjaTurtle/round3-twelve-overlays\n\nDecompile twelve overlays: field views, Pokédex search, GTS Negotiations, Pokéstar screens","measures":{"fuzzy_match_percent":73.301056,"total_code":3865990,"matched_code":2527668,"matched_code_percent":65.382164,"total_data":1824556,"matched_data":206508,"matched_data_percent":11.31826,"total_functions":43397,"matched_functions":30301,"matched_functions_percent":69.8228,"complete_code":1317960,"complete_code_percent":34.09114,"complete_data":866920,"complete_data_percent":47.514023,"total_units":1236,"complete_units":806}},{"timestamp":"2026-10-12T14:38:03Z","commit_sha":"887bc305c5b59da486de321908da1203a1a465a6","commit_message":"Merge pull request #61 from Yvonne-Aizawa/small-overlays\n\nDecompile overlays 266, 102, 311 and 101; overlay 118 is the Plasma Frigate's deck","measures":{"fuzzy_match_percent":69.50016,"total_code":3865990,"matched_code":2388412,"matched_code_percent":61.78009,"total_data":1824556,"matched_data":195392,"matched_data_percent":10.709016,"total_functions":43397,"matched_functions":28961,"matched_functions_percent":66.73503,"complete_code":1225356,"complete_code_percent":31.69579,"complete_data":856728,"complete_data_percent":46.955425,"total_units":1206,"complete_units":771}},{"timestamp":"2026-10-12T14:15:53Z","commit_sha":"6c5b458ab0fb7b0619f442d3be55bf954756a7f1","commit_message":"Merge pull request #65 from Yvonne-Aizawa/decompile-building-enter-effect\n\nDecompile building_enter_effect.c","measures":{"fuzzy_match_percent":68.92864,"total_code":3865990,"matched_code":2372636,"matched_code_percent":61.372017,"total_data":1824556,"matched_data":194872,"matched_data_percent":10.680516,"total_functions":43397,"matched_functions":28783,"matched_functions_percent":66.32486,"complete_code":1224490,"complete_code_percent":31.673388,"complete_data":856216,"complete_data_percent":46.927364,"total_units":1205,"complete_units":770}},{"timestamp":"2026-10-12T14:15:29Z","commit_sha":"553200e170e7982ff3ab3605256dfaeeebc1ce0b","commit_message":"Merge pull request #62 from fascix/codex/ov036-gap\n\nDecompile event_name_entry.c in overlay 36","measures":{"fuzzy_match_percent":68.92849,"total_code":3865990,"matched_code":2372476,"matched_code_percent":61.367874,"total_data":1824556,"matched_data":194872,"matched_data_percent":10.680516,"total_functions":43397,"matched_functions":28782,"matched_functions_percent":66.322556,"complete_code":1224254,"complete_code_percent":31.667284,"complete_data":856184,"complete_data_percent":46.925606,"total_units":1205,"complete_units":769}},{"timestamp":"2026-10-12T14:07:21Z","commit_sha":"588c98217a3e291fd968b1e1357f693e5bf720c9","commit_message":"Merge pull request #66 from TeenageMutantNinjaTurtle/overlays-305-320-328\n\nDecompile overlays 328, 320 and 305: Pass Power app, World Tournament list, link battle demo","measures":{"fuzzy_match_percent":68.90034,"total_code":3865990,"matched_code":2372388,"matched_code_percent":61.365597,"total_data":1824556,"matched_data":194872,"matched_data_percent":10.680516,"total_functions":43397,"matched_functions":28781,"matched_functions_percent":66.32025,"complete_code":1224254,"complete_code_percent":31.667284,"complete_data":856184,"complete_data_percent":46.925606,"total_units":1203,"complete_units":769}},{"timestamp":"2026-10-12T14:06:57Z","commit_sha":"634509029e503537a654d55f6a15b0e686b91322","commit_message":"Merge pull request #64 from TeenageMutantNinjaTurtle/overlays-070-288-079\n\nDecompile overlays 70, 288 and 79: drawing board, film scenario menu, C-Gear","measures":{"fuzzy_match_percent":68.34106,"total_code":3865990,"matched_code":2351340,"matched_code_percent":60.821163,"total_data":1824556,"matched_data":192324,"matched_data_percent":10.540866,"total_functions":43397,"matched_functions":28570,"matched_functions_percent":65.834045,"complete_code":1209848,"complete_code_percent":31.29465,"complete_data":853584,"complete_data_percent":46.783108,"total_units":1200,"complete_units":764}},{"timestamp":"2026-10-12T14:06:43Z","commit_sha":"99280be59856218c0796700cd780e60092acd67c","commit_message":"Merge pull request #63 from TeenageMutantNinjaTurtle/overlays-306-191-266-201\n\nDecompile overlays 306, 191 and 201: battle video save, Wi-Fi Battle Subway, GDS","measures":{"fuzzy_match_percent":67.489044,"total_code":3865990,"matched_code":2320850,"matched_code_percent":60.032486,"total_data":1824556,"matched_data":191900,"matched_data_percent":10.517627,"total_functions":43397,"matched_functions":28274,"matched_functions_percent":65.15197,"complete_code":1208940,"complete_code_percent":31.271162,"complete_data":853520,"complete_data_percent":46.7796,"total_units":1198,"complete_units":763}},{"timestamp":"2026-10-12T14:05:44Z","commit_sha":"0b94705e31fdc4edc2fad34032eb0d79ead89dc3","commit_message":"Merge pull request #60 from TeenageMutantNinjaTurtle/ov216-spin-trade\n\nDecompile overlay 216: the Spin Trade","measures":{"fuzzy_match_percent":66.84307,"total_code":3865990,"matched_code":2297346,"matched_code_percent":59.42452,"total_data":1824556,"matched_data":191024,"matched_data_percent":10.469616,"total_functions":43397,"matched_functions":28027,"matched_functions_percent":64.58281,"complete_code":1190892,"complete_code_percent":30.804321,"complete_data":850036,"complete_data_percent":46.58865,"total_units":1191,"complete_units":755}},{"timestamp":"2026-10-12T14:05:29Z","commit_sha":"9b791f4118e9462e26af4e8dba2458e265696796","commit_message":"Merge pull request #59 from TeenageMutantNinjaTurtle/overlays-323-316-144\n\nDecompile overlays 323, 316 and 144: Pokéstar select, starter selection, Town Map","measures":{"fuzzy_match_percent":66.306625,"total_code":3865990,"matched_code":2277402,"matched_code_percent":58.908634,"total_data":1824556,"matched_data":188932,"matched_data_percent":10.354958,"total_functions":43397,"matched_functions":27741,"matched_functions_percent":63.923775,"complete_code":1189478,"complete_code_percent":30.767748,"complete_data":849824,"complete_data_percent":46.57703,"total_units":1188,"complete_units":753}},{"timestamp":"2026-10-12T14:05:15Z","commit_sha":"f0925f719b3c49177baef09bcc33b1766e6d1c18","commit_message":"Merge pull request #58 from TeenageMutantNinjaTurtle/main-sound-save\n\nDecompile main's start-up, sound and save-control files","measures":{"fuzzy_match_percent":65.5764,"total_code":3865990,"matched_code":2249642,"matched_code_percent":58.19058,"total_data":1824556,"matched_data":187040,"matched_data_percent":10.251262,"total_functions":43397,"matched_functions":27460,"matched_functions_percent":63.27626,"complete_code":1180718,"complete_code_percent":30.541155,"complete_data":847608,"complete_data_percent":46.455578,"total_units":1185,"complete_units":749}},{"timestamp":"2026-10-12T14:05:00Z","commit_sha":"8bb47fb749de9809ee09ca82fc0ac5fc2f631005","commit_message":"Merge pull request #57 from TeenageMutantNinjaTurtle/poke-tool\n\nDecompile poke_tool.c","measures":{"fuzzy_match_percent":65.29549,"total_code":3865990,"matched_code":2238956,"matched_code_percent":57.91417,"total_data":1824556,"matched_data":160808,"matched_data_percent":8.813541,"total_functions":43397,"matched_functions":27223,"matched_functions_percent":62.730145,"complete_code":1171826,"complete_code_percent":30.31115,"complete_data":816716,"complete_data_percent":44.76245,"total_units":1175,"complete_units":739}},{"timestamp":"2026-10-12T14:04:47Z","commit_sha":"4afa43586404abf7d81a22c8641811bedf0dc37e","commit_message":"Merge pull request #56 from TeenageMutantNinjaTurtle/main-field-mcss\n\nDecompile main's field and Pokémon files around poke_tool.c","measures":{"fuzzy_match_percent":64.99393,"total_code":3865990,"matched_code":2227282,"matched_code_percent":57.612206,"total_data":1824556,"matched_data":159660,"matched_data_percent":8.750622,"total_functions":43397,"matched_functions":27093,"matched_functions_percent":62.430584,"complete_code":1159398,"complete_code_percent":29.989681,"complete_data":815544,"complete_data_percent":44.69822,"total_units":1176,"complete_units":737}},{"timestamp":"2026-10-12T14:04:34Z","commit_sha":"019d3919309cfff9f0e08f11f7ce2f352ac47b52","commit_message":"Merge pull request #55 from TeenageMutantNinjaTurtle/main-game-core\n\nDecompile main from the day periods to the zone data","measures":{"fuzzy_match_percent":64.39344,"total_code":3865990,"matched_code":2208800,"matched_code_percent":57.134132,"total_data":1824556,"matched_data":157016,"matched_data_percent":8.60571,"total_functions":43397,"matched_functions":26826,"matched_functions_percent":61.815334,"complete_code":1150906,"complete_code_percent":29.77002,"complete_data":814104,"complete_data_percent":44.619293,"total_units":1158,"complete_units":724}},{"timestamp":"2026-10-12T14:04:13Z","commit_sha":"18f72696f73c5d4b8a70d619177a80db9fe746a6","commit_message":"Merge pull request #54 from TeenageMutantNinjaTurtle/save-blocks-7\n\nDecompile main from the network error screen to the Funfest missions","measures":{"fuzzy_match_percent":64.05781,"total_code":3865990,"matched_code":2196664,"matched_code_percent":56.82022,"total_data":1824556,"matched_data":156524,"matched_data_percent":8.578745,"total_functions":43397,"matched_functions":26472,"matched_functions_percent":60.999607,"complete_code":1141656,"complete_code_percent":29.530754,"complete_data":813608,"complete_data_percent":44.59211,"total_units":1151,"complete_units":717}},{"timestamp":"2026-10-12T02:34:56Z","commit_sha":"2cbfdfddf0a8e8522c91c6ed1663ed6d4bb59c21","commit_message":"Merge pull request #53 from TeenageMutantNinjaTurtle/save-blocks-6\n\nDecompile the save blocks from the battle test to the Dream Radar","measures":{"fuzzy_match_percent":63.66032,"total_code":3865990,"matched_code":2181436,"matched_code_percent":56.426323,"total_data":1824556,"matched_data":155924,"matched_data_percent":8.54586,"total_functions":43397,"matched_functions":26206,"matched_functions_percent":60.386665,"complete_code":1127560,"complete_code_percent":29.166138,"complete_data":812876,"complete_data_percent":44.55199,"total_units":1142,"complete_units":708}},{"timestamp":"2026-10-11T21:41:35Z","commit_sha":"dda19294b8f6adcaf014ef03f9391b9796c002df","commit_message":"Decompile DWC's HTTP layer in overlay 189: NHTTP and GameSpy's ghttp\n\nThe front half of overlay 189's library, 290 functions in 22 files:\nNintendo's HTTP client in lib/dwc/src/nhttp (nhttp_os, _socket, _stdlib,\n_bgnend, _control, _list, _recvbuf, _request, _response, _thread, d_nhttp,\nd_nhttp_common, d_nhttp_private) and GameSpy's HTTP library with DWC's\nwrapper in lib/dwc/src/ghttp (dwc_ghttp, ghttpBuffer, Callbacks, Common,\nConnection, Encryption, Main, Post, Process). The ROM embeds only\n\"ghttpEncryption.c\"; the files and functions are named after pret's\npokerevo, whose Wii build has the same libraries under those names, or\ndescriptively. 246 of 290 functions match; 44 rows.\n\nnhttp.h takes the library's real prototypes (NHTTPCreateConnection ...),\nand nhttp_rap.c reads the header into a char *. Four of main's C library\nnames were wrong for what the code does: setvbuf is fread (and the old\nfread __fread), strspn is strcspn, nibbleArray is __ctype_map. BUGs: the\n\"-33\" SSL error text misses its argument, and a buffer's encryption gets\nthe whole size instead of the piece's.\n\nAll files stay incomplete for now: seven match fully, but linked complete\nthey break other modules' checks (likely ambiguous calls into their\nstatics), to be looked at.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":62.990513,"total_code":3865990,"matched_code":2156282,"matched_code_percent":55.775673,"total_data":1824556,"matched_data":155316,"matched_data_percent":8.512536,"total_functions":43398,"matched_functions":25501,"matched_functions_percent":58.760773,"complete_code":1108144,"complete_code_percent":28.663912,"complete_data":811448,"complete_data_percent":44.473724,"total_units":1094,"complete_units":666}},{"timestamp":"2026-10-11T20:40:07Z","commit_sha":"009004dada08acd2baf6f8f90cafa47767c803d0","commit_message":"Remove a stray scratch copy of crypt.c\n\nlib/dwc/src/crypt/zz_crypt.c was a writer's scratch copy that got committed\nwith the directory. ninja doesn't build it, as no delinks entry names it, but\nCI's compile_all.py compiles every C file and failed on its asm functions.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":62.1846,"total_code":3865990,"matched_code":2136232,"matched_code_percent":55.257053,"total_data":1824556,"matched_data":154280,"matched_data_percent":8.455755,"total_functions":43398,"matched_functions":25255,"matched_functions_percent":58.193928,"complete_code":1108144,"complete_code_percent":28.663912,"complete_data":811448,"complete_data_percent":44.473724,"total_units":1073,"complete_units":666}},{"timestamp":"2026-10-11T20:10:48Z","commit_sha":"84302574b9af6a7157bec97c5bdd078ff5ab45c3","commit_message":"Decompile overlays 76 and 94: the rain weathers and Mistralton's gym\n\nov076 weather_rain.c holds the three weathers overlay 36's table loads from\nit, rain, thunderstorm and gusty rain (46 of 47 functions match). ov094\ngym_mistralton.c is Mistralton City's gym, its cannons and fan ambience (31\nof 34). The ROM names neither file, so the names are guesses. 4 rows;\nov094's .rodata is right in size but two equal-size groups tie in another\norder, noted in the not-linkable list.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":62.1846,"total_code":3865990,"matched_code":2136232,"matched_code_percent":55.257053,"total_data":1824556,"matched_data":154280,"matched_data_percent":8.455755,"total_functions":43398,"matched_functions":25255,"matched_functions_percent":58.193928,"complete_code":1108144,"complete_code_percent":28.663912,"complete_data":811448,"complete_data_percent":44.473724,"total_units":1073,"complete_units":666}},{"timestamp":"2026-10-11T19:23:03Z","commit_sha":"0ae1a1ba93d7e92eac311754d0187517f0f67859","commit_message":"Decompile DWC's storage, competition and download code, and Dpw\n\nOverlay 260's library part: lib/dwc/src/sake (sake.c, sake_error.c,\nsake_post.c, sake_storage.c, sake_records.c, all complete), sc (dwc_sc.c,\ncomplete, and dwc_competition.c), gdb/gdb.c and auth/dwc_auth.c; 167 of 178\nfunctions match. The names Sake, Sc, Gdb and Auth and the SDK calls sakeStartup,\nsakeCreateRecord, wsLoginRemoteAuth and so on are the ROM's log strings'; the\nrest are descriptive. gdb.h was wrong about where the library starts: the\ncompetition client is its own Sc.\n\nOverlay 189's back half: lib/dwc/src/nd/nd.c (the content downloader; the\nDWC_Nd* names are those pret's pokeheartgold and pokeplatinum use, matched by\nbehaviour), gamestats/gamestats.c, crypt/crypt.c (signature checking, with\nthe big-number library's five hand-written word loops as asm functions),\nand lib/dpw/src/dpw_tr.c and dpw_battle_tower.c (the GTS and Battle Tower\nserver pages; guessed names, ARM, in a new lib/dpw with its own\nlibrary.toml); 124 of 176 match.\n\nThe download callback takes a third argument, the server error, at all four\ncallers. 97 rows.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":61.900852,"total_code":3865990,"matched_code":2126544,"matched_code_percent":55.006454,"total_data":1824556,"matched_data":154076,"matched_data_percent":8.444575,"total_functions":43398,"matched_functions":25178,"matched_functions_percent":58.0165,"complete_code":1108144,"complete_code_percent":28.663912,"complete_data":811448,"complete_data_percent":44.473724,"total_units":1073,"complete_units":666}},{"timestamp":"2026-10-11T18:39:38Z","commit_sha":"14cd19457db5cf8b010984e3d8ce9892f48de926","commit_message":"Decompile overlays 178 and 180, the Rhythm Check and the Feeling ranking\n\nov178 irc_rhythm_check.c is the Feeling Check's Rhythm Check (a countdown,\nten taps, the intervals compared over infrared), named after its \"RhythmCheck\"\nmessage, as the ROM has no name for it; complete. ov180 irc_ranking.c (the\nROM's name) is its ranking list; 65 of 70 functions match, 5 rows. An\nunreferenced word at the start of ov178's .rodata is the global\nIRC_RHYTHM_CHECK_UNUSED_400.\n\nBUGs: Rhythm Check starts the system timer only when it is already started,\nleaves the score's base unset for 30 s or more, and stores a fixed-point\nvalue as a pixel position; the ranking's FindSelf returns -1 where its\ncaller tests 0xffff.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":60.839485,"total_code":3865990,"matched_code":2102022,"matched_code_percent":54.372154,"total_data":1824556,"matched_data":153120,"matched_data_percent":8.3921795,"total_functions":43398,"matched_functions":24888,"matched_functions_percent":57.348263,"complete_code":1102020,"complete_code_percent":28.505507,"complete_data":807136,"complete_data_percent":44.237392,"total_units":1061,"complete_units":660}},{"timestamp":"2026-10-11T17:46:56Z","commit_sha":"aa41834419fde3331a6469b37517b1ac689c37b6","commit_message":"Decompile overlays 176 and 177, the Feeling Check's menu and Sync Check\n\nov176 irc_compat_menu.c is the Feeling Check's start screen (the Begin\nCheck and Ranking buttons, the heart), and ov177 irc_sync_check.c the Sync\nCheck mini-game (tracing the outline and comparing the two traces over\ninfrared). The ROM has no names for them, so the names are guesses, after\ntheir messages and their siblings in overlays 175 and 179. 118 of 121\nfunctions match; 3 rows. Their .rodata matches in both versions.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":60.467247,"total_code":3865990,"matched_code":2089348,"matched_code_percent":54.04432,"total_data":1824556,"matched_data":152284,"matched_data_percent":8.346359,"total_functions":43398,"matched_functions":24750,"matched_functions_percent":57.030277,"complete_code":1095450,"complete_code_percent":28.335562,"complete_data":806768,"complete_data_percent":44.217224,"total_units":1061,"complete_units":659}},{"timestamp":"2026-10-11T17:44:00Z","commit_sha":"96c4f8f289b9c89b1d108706ffc872c16e830f9e","commit_message":"Decompile overlay 337, DS Protect's second copy\n\nOverlay 337 links DS Protect again, in another order and with its own\nvariants: four check stubs, the cipher, four RunChecks runners and their\ncall stubs, DSProt_Init (which the game calls, as the overlay has no .ctor),\nthe decryptor, and two emulator and two flashcart checks. Five files in\nlib/dsprot/src, named *_multi.c, since the linker can't take a second file\nof the names overlay 165's copy has, and every name that repeats one of\noverlay 165's takes a Multi suffix. 52 of 65 functions match; 9 rows.\n\nstub_check_multi.c and decrypt_multi.c match fully but stay incomplete:\nlinked, the still-delinked cipher's address-plus-0x2200 literals resolve\nwrongly (noted in the not-linkable list).\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":60.138977,"total_code":3865990,"matched_code":2077098,"matched_code_percent":53.727455,"total_data":1824556,"matched_data":151392,"matched_data_percent":8.297471,"total_functions":43398,"matched_functions":24614,"matched_functions_percent":56.7169,"complete_code":1095450,"complete_code_percent":28.335562,"complete_data":806768,"complete_data_percent":44.217224,"total_units":1061,"complete_units":659}},{"timestamp":"2026-10-11T17:32:25Z","commit_sha":"e5fb2ade33c605f3c16bf9b5a2b50e4908ed010f","commit_message":"Decompile the rest of DS Protect in overlay 165\n\ndsprot_decrypt.c (complete: the dispatcher that decrypts a function for one\ncall and encrypts it again), dsprot_detect.c (the emulator and flashcart\nchecks and the CRC), dsprot_cipher.c (RC4 and the code cipher) and\ndsprot_cipher_entry.c (the two code-entry pointers before the cipher\ntable, a guess at the file they belong to). The Call stubs and the .ctor\nDecrypt functions are hand-written assembly, MWCC asm functions; the cache\nflush that the library inlines three times is the static inline asm block\nallowed in lib/. 4 rows.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":59.882442,"total_code":3865990,"matched_code":2074282,"matched_code_percent":53.65461,"total_data":1824556,"matched_data":151320,"matched_data_percent":8.293525,"total_functions":43398,"matched_functions":24599,"matched_functions_percent":56.682335,"complete_code":1095450,"complete_code_percent":28.335562,"complete_data":806768,"complete_data_percent":44.217224,"total_units":1057,"complete_units":659}},{"timestamp":"2026-10-11T17:28:53Z","commit_sha":"6ca444884aba1dcd4ffb9ddcdd1059544352a559","commit_message":"Decompile overlay 29: DWC's voice chat library and its Game Freak wrapper\n\nOverlay 29 is Nintendo's libVCT 1.4.1 (the version string it passes at\ninit) and a thin Game Freak file in front of it. The wrapper is\nsrc/ov029/dwc_rap_vchat.c, named after its dwc_rap.c caller; the library is\nfive files in lib/dwc/src/vct (vct_adpcm.c, vct_audio.c, vct_session.c,\nvct_dsp.c, vct.c), split at the .rodata size-sort resets and the .data and\n.bss order. Names are descriptive except the assert's config.aid.\n\nlib/dwc gets its library.toml: the game's dsi/1.1p1 at -O4,p, which\ncompiles libVCT best of every compiler tried (2.0 and 1.2 do worse), Thumb\nby default for the rest of DWC, and ARM per file for libVCT.\n\nThe wrapper matches 15 of 19 functions and libVCT 59 of 96; 41 rows. An\nunreferenced word after vct_dsp.c's coefficients gets a symbol.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":59.784637,"total_code":3865990,"matched_code":2072846,"matched_code_percent":53.61747,"total_data":1824556,"matched_data":151244,"matched_data_percent":8.289359,"total_functions":43398,"matched_functions":24589,"matched_functions_percent":56.659294,"complete_code":1094682,"complete_code_percent":28.315697,"complete_data":806728,"complete_data_percent":44.21503,"total_units":1055,"complete_units":658}},{"timestamp":"2026-10-11T17:16:07Z","commit_sha":"6f294b7d80b687ab97e54458b5607239075edae9","commit_message":"Decompile NitroSDK's multiboot library in overlay 181\n\nThe rest of overlay 181 is libmb, the parent side of DS Download Play,\nwith no game code: seven files in lib/nitro/src/mb (mb_comm.c, mb_segment.c,\nmb_gameinfo.c, mb_wm.c, mb_cache.c, mb_task.c, mb_frame.c) and a private\nmb_private.h. The ROM has no file names here, so the split follows the data\neach part uses and the names are descriptive; the public MB_* names are\nswan's. 50 of 88 functions match, with 38 rows, most not worked on yet.\n\nlibmb is Thumb, unlike the rest of lib/nitro, with -ipa file and\n-inline on,noauto, given per file in library.toml. configure.py now takes\n-thumb and -nothumb as one option, so a file's -thumb replaces its\nlibrary's -nothumb.\n\nStruct fields and functions the code doesn't name are descriptive or unk,\nnot the SDK's. cart_key_release and cart_key_create are declared once, in\nnitro/os.h.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":59.326035,"total_code":3865990,"matched_code":2066076,"matched_code_percent":53.442352,"total_data":1824556,"matched_data":151136,"matched_data_percent":8.28344,"total_functions":43398,"matched_functions":24515,"matched_functions_percent":56.488777,"complete_code":1094682,"complete_code_percent":28.315697,"complete_data":806728,"complete_data_percent":44.21503,"total_units":1049,"complete_units":658}},{"timestamp":"2026-10-11T17:07:37Z","commit_sha":"7c51694495f4c7b4839782c4be1c4c442b965a62","commit_message":"Decompile the rest of overlay 143's monolith screens\n\nmonolith_power_info.c (the pass power screen on top), monolith_mission_select.c\n(the Funfest mission list, the file of the asserts' mfw) and\nmonolith_mission_info.c (the mission's info on top), the three screens that\nmonolith_main.c's table pointed at. The ROM names only monolith_tool.c, so\nthe names are guesses. 88 of 99 functions match; 11 rows. PassPowerData\ngets its description message, and an unused 4-byte global of two\nMONOLITH_FLAG_VISITED flags gets a symbol. The third level button's touch\nrectangle is a BUG, with its fix.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":59.026356,"total_code":3865990,"matched_code":2063200,"matched_code_percent":53.36796,"total_data":1824556,"matched_data":150956,"matched_data_percent":8.273575,"total_functions":43398,"matched_functions":24465,"matched_functions_percent":56.373566,"complete_code":1094682,"complete_code_percent":28.315697,"complete_data":806728,"complete_data_percent":44.21503,"total_units":1044,"complete_units":658}},{"timestamp":"2026-10-11T16:54:18Z","commit_sha":"26f29b84fd5aa7a3df03db2f9d5bed4adebd5dc5","commit_message":"Decompile 20 more overlays and finish ov271's and ov326's gaps\n\n37 files, about 861 of 926 functions matching, 15 files complete in both\nversions:\n\n- Awards and results: ov313 th_award.c and th_award_graphic.c (the\n  ROM's), ov314 chihou_zukan_award(_graphic).c and ov315\n  zenkoku_zukan_award(_graphic).c (the ROM's), ov321 pkwd_count.c and\n  pkwd_count_graphic.c (the ROM's).\n- Pokédex: ov297 zukan_toroku.c, zukan_toroku_graphic.c and\n  zukan_nickname.c, ov302 zukan.c, zukan_common.c and\n  zukan_search_engine.c (all the ROM's).\n- Battle and infrared: ov289 b_choice_main.c and ov171 vs_multi_list.c (the\n  ROM's), ov175 compatible_irc_sys.c, irc_compatible.c and irc_appbar.c\n  (the ROM's), ov179 irc_compat_result.c, ov192 pokemontrade_ircdemo.c and\n  its pokemontrade_demo_common.c, ov141 bsubway_records.c.\n- Field: ov075 weather_particles.c, ov086 dowsing.c (the ROM's), ov096\n  gym_driftveil.c, ov099 gym_opelucid.c, ov082 union_subdisp.c (the ROM's),\n  ov198 comm_tvt_field.c.\n- Network: ov327 wbt_download_sys.c, wbt_download_net_graphic.c and\n  wbt_download_net_util.c (the ROM's), ov253 mictest.c (the ROM's).\n- ov271's tail as br_net.c and br_pokesearch.c (the ROM's), and ov326's gap\n  as t_download_util.c and t_download_save.c (the latter the ROM's).\n\nNames without a ROM string are guesses, said in their headers. Overlay 193\nalso embeds \"pokemontrade_demo_common.c\", for other code, and the linker\ncan't take two files of one name, so ov192's copy is\npokemontrade_demo_common_irc.c.\n\nFixed prototypes: func_ov036_021b445c takes the look array and a u8\nstate; HEAPID_ZUKAN is in heap.h. Ambiguous relocations into the new\nstatics are pinned to the overlay their callers load. 67 nonmatching rows.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":58.74799,"total_code":3865990,"matched_code":2056386,"matched_code_percent":53.191704,"total_data":1824556,"matched_data":150212,"matched_data_percent":8.232798,"total_functions":43398,"matched_functions":24377,"matched_functions_percent":56.17079,"complete_code":1094682,"complete_code_percent":28.315697,"complete_data":806728,"complete_data_percent":44.21503,"total_units":1042,"complete_units":658}},{"timestamp":"2026-10-11T15:07:26Z","commit_sha":"eb748343494315b267e38cff89a1e82d57a38187","commit_message":"Merge origin/main: take PR #50's ov264\n\nPR #50 decompiled overlay 264 as cdemo_main.c, cdemo_script.c and\ncdemo_control.c, all complete, while our batch had it as two files. Keep\ntheirs, with their names and include/app/cdemo.h, and drop ours.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":56.368633,"total_code":3865990,"matched_code":1980574,"matched_code_percent":51.230705,"total_data":1824556,"matched_data":143756,"matched_data_percent":7.8789577,"total_functions":43398,"matched_functions":23503,"matched_functions_percent":54.156876,"complete_code":1071224,"complete_code_percent":27.708918,"complete_data":801316,"complete_data_percent":43.91841,"total_units":1027,"complete_units":643}},{"timestamp":"2026-10-11T14:50:10Z","commit_sha":"df9c731f4e11be46a70378d9cb2bacd9dfeed985","commit_message":"Merge pull request #50 from Itshimcules/codex/opening-demo\n\nComplete opening demo overlay (45 matching functions)","measures":{"fuzzy_match_percent":55.71081,"total_code":3865990,"matched_code":1957664,"matched_code_percent":50.638103,"total_data":1824556,"matched_data":136828,"matched_data_percent":7.4992495,"total_functions":43398,"matched_functions":23207,"matched_functions_percent":53.474815,"complete_code":1053442,"complete_code_percent":27.248959,"complete_data":796308,"complete_data_percent":43.643932,"total_units":1022,"complete_units":626}},{"timestamp":"2026-10-11T13:02:36Z","commit_sha":"98db4102bbe89bad329035587eb10cf5807b4a4d","commit_message":"Merge pull request #49 from TeenageMutantNinjaTurtle/save-blocks-3\n\nDecompile the save blocks from C-Gear to the trainer log (combined)","measures":{"fuzzy_match_percent":55.659336,"total_code":3865990,"matched_code":1955674,"matched_code_percent":50.586628,"total_data":1824556,"matched_data":136304,"matched_data_percent":7.4705296,"total_functions":43398,"matched_functions":23162,"matched_functions_percent":53.371124,"complete_code":1051452,"complete_code_percent":27.197483,"complete_data":795752,"complete_data_percent":43.61346,"total_units":1020,"complete_units":623}},{"timestamp":"2026-10-11T08:40:49Z","commit_sha":"c8ba3302bf3dbe0fb83a73d8a7b0e294d212628e","commit_message":"Match 16 more functions of the musical's dup_fitting.c\n\n46 of 58 now match. Case bodies in the original's order, per-field\nassignments in place of compound literals, declaration orders for the\nstack slots, and func_ov210_021ef118 taking and returning an s32. The 11\nleft have rows; the slide helper is a static inline, so the file emits\nonly the original's functions.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.475437,"total_code":3865990,"matched_code":1948522,"matched_code_percent":50.401627,"total_data":1824556,"matched_data":136304,"matched_data_percent":7.4705296,"total_functions":43398,"matched_functions":22955,"matched_functions_percent":52.894146,"complete_code":1045054,"complete_code_percent":27.031988,"complete_data":795708,"complete_data_percent":43.61105,"total_units":1009,"complete_units":614}},{"timestamp":"2026-10-11T08:09:48Z","commit_sha":"39aa31dc4e25ef0d217793ecba2b0474f7dae28a","commit_message":"Decompile overlays 31, 117, 122, 172, 208, 260 and 262\n\n- ov031, the infrared link: four files, as the .bss order shows only a\n  split can give: net_devirc.c and net_irc.c complete, irc_link.c\n  (15/19) and irc_spi.c (5/7), whose loops compile like a lower\n  optimization level.\n- ov260, the Wi-Fi battle match: wifibattlematch_link.c (complete),\n  _link_random.c (41/44), _link_competition.c (45/46),\n  wifibattlematch_net.c (99/105) and _net_fields.c (5/5, .data order\n  open). The rest of the overlay is Nintendo's DWC GDB/SAKE library,\n  declared in dwc/gdb.h and not written yet.\n- ov262: wifibattlematch_graphic.c and _util.c complete, _view.c (45/52);\n  ov262_common.h is replaced by their headers.\n- ov172, the Entree Forest capture: pdc.c and pdc_main.c complete,\n  pdc_msg.c (15/16).\n- ov208, the musical's dressing room: dup_fitting_item.c complete,\n  dup_fitting.c written (33/58, still being ground).\n- The gimmicks of Shauntal's room (ov122, complete) and the Plasma\n  Frigate (ov117, every function matches; two equal tables swap in\n  .rodata).\n\nFour ambiguous calls that now resolved to ov117's statics are pinned to\nov210 and ov211, and ov262's table symbol is split at 0x021c5eb4.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.45054,"total_code":3865990,"matched_code":1942974,"matched_code_percent":50.258125,"total_data":1824556,"matched_data":136304,"matched_data_percent":7.4705296,"total_functions":43398,"matched_functions":22942,"matched_functions_percent":52.86419,"complete_code":1045054,"complete_code_percent":27.031988,"complete_data":795708,"complete_data_percent":43.61105,"total_units":1009,"complete_units":614}},{"timestamp":"2026-10-11T06:23:34Z","commit_sha":"cb5075f4f44acfd452993132ba96b3c1c4cb1d2f","commit_message":"Decompile overlays 116, 120, 125, 132, 174, 193, 215, 261 and 290\n\n- ov215, the mail: mailtool.c (complete), mailsys.c (27/29), mailview.c\n  (15/16) and mb_seq.c, the mailbox (116/118).\n- ov261, the battle competitions: battle_championship_flow.c (40/41),\n  livebattlematch_flow.c (34/36), digitalcardcheck.c and\n  livebattlematch_irc.c (both complete).\n- ov290 wifibattlematch_sys.c (31/36), which chains overlays 260 to 263.\n- ov174 ircbattlematch.c (85/86); ov174.h is now ircbattlematch.h.\n- ov193, the trade demo: pokemontrade_demo_up.c, _down.c and _middle.c\n  complete, _common.c (19/20).\n- The field gimmicks of Dragonspiral Tower (ov132), the Giant Chasm\n  (ov116), the Champion's room (ov120) and Caitlin's room (ov125), all\n  complete; ov132.h and ov116.h are replaced by headers named after them.\n\nPrototype fixes: func_0200976c and func_0200977c take a u8 index,\nfunc_0200c370 a u32 mask, func_0200f1d8 returns u32 and\nfunc_ov211_021f0608 the musical's GFLNetInitData. ov208's calls to\n0x021ef118 are pinned to ov210, now that ov116 defines that address.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.358658,"total_code":3865990,"matched_code":1887752,"matched_code_percent":48.829716,"total_data":1824556,"matched_data":131732,"matched_data_percent":7.219949,"total_functions":43398,"matched_functions":22399,"matched_functions_percent":51.61298,"complete_code":1035162,"complete_code_percent":26.776117,"complete_data":793276,"complete_data_percent":43.477757,"total_units":995,"complete_units":605}},{"timestamp":"2026-10-11T04:32:45Z","commit_sha":"4b3e6f6ca3d612aa3a0c8fd0df6e1eafbb3b4b97","commit_message":"Merge remote-tracking branch 'origin/main'\n\n# Conflicts:\n#\tconfig/fixes.txt","measures":{"fuzzy_match_percent":51.661907,"total_code":3865990,"matched_code":1827584,"matched_code_percent":47.273376,"total_data":1824556,"matched_data":129348,"matched_data_percent":7.0892863,"total_functions":43398,"matched_functions":21839,"matched_functions_percent":50.322598,"complete_code":1011674,"complete_code_percent":26.16856,"complete_data":789412,"complete_data_percent":43.265976,"total_units":986,"complete_units":595}},{"timestamp":"2026-10-11T03:26:37Z","commit_sha":"7930b6e8adc5a45abca880a28d7bdcf770ba1cb9","commit_message":"Note the permuter runs on btl_client.c's three functions\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":50.07339,"total_code":3865990,"matched_code":1774292,"matched_code_percent":45.894894,"total_data":1824556,"matched_data":125400,"matched_data_percent":6.8729053,"total_functions":43398,"matched_functions":21294,"matched_functions_percent":49.066776,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":977,"complete_units":589}},{"timestamp":"2026-10-11T02:34:05Z","commit_sha":"b7b53edb2eef441c2929bf6112f7ed08f73172d8","commit_message":"Merge remote-tracking branch 'origin/main' into stillopen","measures":{"fuzzy_match_percent":50.07339,"total_code":3865990,"matched_code":1774292,"matched_code_percent":45.894894,"total_data":1824556,"matched_data":125400,"matched_data_percent":6.8729053,"total_functions":43398,"matched_functions":21294,"matched_functions_percent":49.066776,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":977,"complete_units":589}},{"timestamp":"2026-10-11T02:31:52Z","commit_sha":"4105eaaad49878b6e46001b800fa427a48dfb642","commit_message":"Note in the boundaries guide that a size-sorted table run can move a .text boundary\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":50.07339,"total_code":3865990,"matched_code":1774292,"matched_code_percent":45.894894,"total_data":1824556,"matched_data":125400,"matched_data_percent":6.8729053,"total_functions":43398,"matched_functions":21294,"matched_functions_percent":49.066776,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":977,"complete_units":589}},{"timestamp":"2026-10-11T02:30:31Z","commit_sha":"448b42231658cdfbb747adcc09374f2d8596289b","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":50.07339,"total_code":3865990,"matched_code":1774292,"matched_code_percent":45.894894,"total_data":1824556,"matched_data":125400,"matched_data_percent":6.8729053,"total_functions":43398,"matched_functions":21294,"matched_functions_percent":49.066776,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":977,"complete_units":589}},{"timestamp":"2026-10-11T01:47:18Z","commit_sha":"1abff097921ccab3305805588122643c6620db83","commit_message":"Give btl_client.c the original's .rodata and .bss order\n\nIts .bss statics share MWCC's size sort with the .rodata objects, which rodata_order.py doesn't model, so compiled\nvariants were searched: each table at file scope or inside its one function, each static at the top, before its\nfirst function or inside it. sTrainerHintMsgs, sFameBonus, sEscapeMessages and sEVParams go inside the functions\nthat read them, sXItems and sCureItems out to file scope before theirs, and sSelectSeq before its first function.\nBoth sections now come out as the original's; three functions are left.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":49.104996,"total_code":3865990,"matched_code":1748864,"matched_code_percent":45.237156,"total_data":1824556,"matched_data":112568,"matched_data_percent":6.1696105,"total_functions":43398,"matched_functions":21027,"matched_functions_percent":48.45154,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":973,"complete_units":589}},{"timestamp":"2026-10-11T01:28:16Z","commit_sha":"0f8c04b7cba3191ad6733f72250d3a11d3f32ead","commit_message":"Merge remote-tracking branch 'origin/main' into stillopen","measures":{"fuzzy_match_percent":49.104996,"total_code":3865990,"matched_code":1748864,"matched_code_percent":45.237156,"total_data":1824556,"matched_data":111136,"matched_data_percent":6.0911255,"total_functions":43398,"matched_functions":21027,"matched_functions_percent":48.45154,"complete_code":1001278,"complete_code_percent":25.899652,"complete_data":787928,"complete_data_percent":43.184643,"total_units":973,"complete_units":589}},{"timestamp":"2026-10-11T01:05:09Z","commit_sha":"819fff93b6d61e5c72c9e372b9044be0ac016a3c","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":49.102646,"total_code":3865990,"matched_code":1747410,"matched_code_percent":45.19955,"total_data":1824556,"matched_data":110844,"matched_data_percent":6.075122,"total_functions":43398,"matched_functions":21021,"matched_functions_percent":48.437714,"complete_code":992852,"complete_code_percent":25.681702,"complete_data":787620,"complete_data_percent":43.167763,"total_units":974,"complete_units":588}},{"timestamp":"2026-10-11T00:55:37Z","commit_sha":"835220d4c3966a3a416dd238ea23a4dd3ea28b04","commit_message":"Complete move_handlers.c: HandlerChatter, HandlerSolarBeamPower, HandlerHeavySlam\n\n- HandlerChatter keeps its confusion status in a register, as MWCC does for an enum-typed local. The CONDITION_*\n  values are #defines that tr_ai.inc shares, so battle/btl_pokeparam.h gets a count-only BattleConditionID (our\n  name), which also sizes BattleMon's condition arrays.\n- HandlerSolarBeamPower tests GetWeather's result unnarrowed, so GetWeather returns u8, as do ServerEvent_GetWeather\n  and GetFieldWeather beneath it, down to the field's u8 weather. They all still match, and 4377d5d1a's build break\n  doesn't come back since the definitions agree with the prototypes.\n- HandlerHeavySlam divides two weights with _s32_div_f, which the probe can't see: func_ov167_021abee0 returns s32,\n  still clamping a u32 local, which matches.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.426605,"total_code":3865990,"matched_code":1726224,"matched_code_percent":44.65154,"total_data":1824556,"matched_data":110000,"matched_data_percent":6.0288644,"total_functions":43398,"matched_functions":20710,"matched_functions_percent":47.721092,"complete_code":991522,"complete_code_percent":25.647297,"complete_data":787252,"complete_data_percent":43.147594,"total_units":968,"complete_units":585}},{"timestamp":"2026-10-11T00:46:42Z","commit_sha":"55a5c2711b94d7e8cdd49de0b98aadc9637276cc","commit_message":"Complete ability_handlers.c: write its event handler tables\n\nThe 148 handler tables, the table of EventAdd functions by ability and the items that still work under Klutz were\nexterns in battle/btl_ability.h. Each handler table is now defined before the EventAdd function that returns it, the\nability table before the first function, as item_handlers.c and move_handlers.c have theirs, and the Klutz items\ninside HandlerKlutzSkipCheck; MWCC's size sort then lays all 151 objects out as the original's. Two handlers had\nprototypes that don't fit the tables: HandlerAirLockChangeWeather returned BattleEventVar_RewriteValue's result and\nfunc_ov167_021c06cc took only the item. Both take the handler parameters now, with the same code.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.418385,"total_code":3865990,"matched_code":1725760,"matched_code_percent":44.639538,"total_data":1824556,"matched_data":110000,"matched_data_percent":6.0288644,"total_functions":43398,"matched_functions":20664,"matched_functions_percent":47.615097,"complete_code":958216,"complete_code_percent":24.785786,"complete_data":782072,"complete_data_percent":42.86369,"total_units":968,"complete_units":584}},{"timestamp":"2026-10-11T00:46:18Z","commit_sha":"001bf60a7ac55134b6cd3079a4cd528ce72a3a8c","commit_message":"Generate the message ID and easy chat headers in compile_all.py\n\nThe Compile workflow has failed on every push since sources began including the generated text/*/*.h and\nconstants/pms_words.h headers: compile_all.py only wrote the headers of data/constants/. It now writes every header\nthat ninja generates, from the same committed sources.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.41585,"total_code":3865990,"matched_code":1725662,"matched_code_percent":44.637,"total_data":1824556,"matched_data":106476,"matched_data_percent":5.8357215,"total_functions":43398,"matched_functions":20650,"matched_functions_percent":47.582836,"complete_code":939392,"complete_code_percent":24.298874,"complete_data":778548,"complete_data_percent":42.670544,"total_units":968,"complete_units":583}},{"timestamp":"2026-10-11T00:39:27Z","commit_sha":"b5a6d146e65b1fb2f285421907058ede1fa4d5a6","commit_message":"Give move_handlers.c the original's .rodata order\n\nLike item_handlers.c, it defines its table of EventAdd functions at the top of the file, and its ten value tables,\nsuch as FLAIL_POWER_TABLE, go inside the handlers that read them: declared at file scope, they swapped thirteen of\nthe equal-size handler tables in MWCC's size sort. All 226 objects now come out as the original's, so HandlerChatter\nis all that keeps the file from being complete.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.41585,"total_code":3865990,"matched_code":1725662,"matched_code_percent":44.637,"total_data":1824556,"matched_data":106476,"matched_data_percent":5.8357215,"total_functions":43398,"matched_functions":20650,"matched_functions_percent":47.582836,"complete_code":939392,"complete_code_percent":24.298874,"complete_data":778548,"complete_data_percent":42.670544,"total_units":968,"complete_units":583}},{"timestamp":"2026-10-11T00:33:45Z","commit_sha":"64c1a5fd122dbbcf05a419a42f1bdf4ae819c1e6","commit_message":"Complete item_handlers.c: its EventAdd table is defined at the top\n\nMWCC lists a static object where it is defined, not where it is forward-declared, and the 1376-byte table of EventAdd\nfunctions takes part in the size sort that orders the handler tables. Defined at the end of the file, 133 of the 171\ntables came out in another order; defined after the prototypes, all are the original's.\n\nOverlays 260 and 261 call four addresses in the file's code and load a fifth, which dsd couldn't attribute between\noverlays 167 and 262 and the build gave to 167's symbols, now static. They are overlay 262's, which loads with them.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.41585,"total_code":3865990,"matched_code":1725662,"matched_code_percent":44.637,"total_data":1824556,"matched_data":101296,"matched_data_percent":5.5518165,"total_functions":43398,"matched_functions":20650,"matched_functions_percent":47.582836,"complete_code":939392,"complete_code_percent":24.298874,"complete_data":778548,"complete_data_percent":42.670544,"total_units":968,"complete_units":583}},{"timestamp":"2026-10-10T22:12:18Z","commit_sha":"769d1b7ac0ae4607cf1e9d6b044240564d8436a6","commit_message":"Merge remote-tracking branch 'origin/main' into dsd-ltd","measures":{"fuzzy_match_percent":48.399605,"total_code":3865990,"matched_code":1725034,"matched_code_percent":44.620758,"total_data":1824556,"matched_data":97040,"matched_data_percent":5.318554,"total_functions":43398,"matched_functions":20567,"matched_functions_percent":47.391586,"complete_code":923624,"complete_code_percent":23.891008,"complete_data":774272,"complete_data_percent":42.436188,"total_units":968,"complete_units":581}},{"timestamp":"2026-10-10T21:56:07Z","commit_sha":"c14ad142d86f3eeaf3f338873e2e5cf253341f96","commit_message":"Merge remote-tracking branch 'origin/main'","measures":{"fuzzy_match_percent":48.820164,"total_code":3832642,"matched_code":1725012,"matched_code_percent":45.00843,"total_data":1463048,"matched_data":97040,"matched_data_percent":6.632728,"total_functions":41672,"matched_functions":20565,"matched_functions_percent":49.34968,"complete_code":920926,"complete_code_percent":24.02849,"complete_data":773840,"complete_data_percent":52.892315,"total_units":968,"complete_units":580}},{"timestamp":"2026-10-10T21:43:42Z","commit_sha":"0279f0ccca5ff7a117cb3c33115151f0efaaddfa","commit_message":"Merge remote-tracking branch 'origin/main' into dsd-ltd","measures":{"fuzzy_match_percent":48.350655,"total_code":3832642,"matched_code":1709060,"matched_code_percent":44.592216,"total_data":1463048,"matched_data":97020,"matched_data_percent":6.6313615,"total_functions":41672,"matched_functions":20286,"matched_functions_percent":48.68017,"complete_code":918632,"complete_code_percent":23.968636,"complete_data":773232,"complete_data_percent":52.850758,"total_units":962,"complete_units":577}},{"timestamp":"2026-10-10T21:10:56Z","commit_sha":"e8c388f4d603dae14013e9d8eccb1b559b23ffd2","commit_message":"Give overlay 11's Game Freak files a header each, and fix two of their types\n\nOverlay 11 starts with net_devwifi.c, dwc_rap.c and dwc_rapcommon.c before Nintendo's DWC library. dwc_rapcommon.c's\nfunctions move from gfl/dwc_rap.h to gfl/dwc_rapcommon.h, and gfl/net_devwifi.h is new. The connection event callback\ntakes four arguments, as the dispatcher passes them and ov271's reads them, so mystery gift's and game sync's take the\nfourth too; and func_ov011_02152404 returns one of five states, which callers switch on, rather than a BOOL.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.350655,"total_code":3832642,"matched_code":1709060,"matched_code_percent":44.592216,"total_data":1463048,"matched_data":97020,"matched_data_percent":6.6313615,"total_functions":41672,"matched_functions":20286,"matched_functions_percent":48.68017,"complete_code":918632,"complete_code_percent":23.968636,"complete_data":773232,"complete_data_percent":52.850758,"total_units":962,"complete_units":577}},{"timestamp":"2026-10-10T21:09:43Z","commit_sha":"f61a9a386301a7f9172dd5fbc9078458381e4a51","commit_message":"Give overlay 30's three files a header each\n\nOverlay 30 is net_devwireless.c, net_whpipe.c and wih.c, by their embedded names. Their declarations were spread over\ngfl/net.h, field/festival.h and field/delivery_beacon.h; they move to gfl/net_devwireless.h, gfl/net_whpipe.h and\ngfl/wih.h, which their callers include.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.350655,"total_code":3832642,"matched_code":1709060,"matched_code_percent":44.592216,"total_data":1463048,"matched_data":97020,"matched_data_percent":6.6313615,"total_functions":41672,"matched_functions":20286,"matched_functions_percent":48.68017,"complete_code":918632,"complete_code_percent":23.968636,"complete_data":773232,"complete_data_percent":52.850758,"total_units":962,"complete_units":577}},{"timestamp":"2026-10-10T20:46:41Z","commit_sha":"b1b049598eb24c89ff20e04118046da22bbd4c5b","commit_message":"Decompile the rest of overlay 139: ui_scene.c, touchbar.c, yesno_menu.c and frame_list.c\n\nThe parts of the lower screen that applications share, each named from the ROM's embedded file name:\n- ui_scene.c (complete): scenes that run a table of steps, and the OBJ resources of a set of files (UIScene_*,\n  UIObjRes_*).\n- touchbar.c: the bar of icons at the bottom, such as the return button (TouchBar_*). 39 of 41 functions match.\n- yesno_menu.c: the menu of two choices the evolution demo opens (TwoChoiceMenu_*). 7 of 8 match.\n- frame_list.c: the scrolling list with its scroll bar, arrows, key repeat and flicking (FrameList_*). 41 of 55\n  match; most of the rest load the row height and scroll speeds with the other signedness.\n\nThe Ov139* types are named after their files, the list's print and select callbacks take the arguments the list\npasses (their users in ov255, ov326 and ov332 follow), and the 17 mismatches have rows. Written by Sonnet file-writer\nagents, one per file, and reviewed here.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.350655,"total_code":3832642,"matched_code":1709060,"matched_code_percent":44.592216,"total_data":1463048,"matched_data":97020,"matched_data_percent":6.6313615,"total_functions":41672,"matched_functions":20286,"matched_functions_percent":48.68017,"complete_code":918632,"complete_code_percent":23.968636,"complete_data":773232,"complete_data_percent":52.850758,"total_units":962,"complete_units":577}},{"timestamp":"2026-10-10T20:33:05Z","commit_sha":"6abc1a6417156aecdd2269a5f23dacba4095a712","commit_message":"Decompile msgsearch.c\n\nOverlay 139's search of message files for the lines that start with a prefix, which the easy chat input uses to find\nits words: MsgSearch_Create, MsgSearch_Free and MsgSearch_Find, named from the embedded file name.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.028263,"total_code":3832642,"matched_code":1702200,"matched_code_percent":44.413227,"total_data":1463048,"matched_data":96816,"matched_data_percent":6.617418,"total_functions":41672,"matched_functions":20190,"matched_functions_percent":48.4498,"complete_code":918156,"complete_code_percent":23.956215,"complete_data":773220,"complete_data_percent":52.84994,"total_units":960,"complete_units":576}},{"timestamp":"2026-10-10T20:30:19Z","commit_sha":"875d4bca85795bcac15ebbbcb6bf70f93f4cece3","commit_message":"Decompile print_msg.c\n\nOverlay 139's printing of a string into a window through the print queue, left, right or centered at its x\n(PrintStrAligned, which eleven overlays call), and of a fraction with its slash centered (PrintFraction). The ROM has\nno name for the file, so print_msg.c is a guess. btl_main_12.txt's three messages are the fraction's slash and its\ntwo numbers.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.019703,"total_code":3832642,"matched_code":1701872,"matched_code_percent":44.40467,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20186,"matched_functions_percent":48.4402,"complete_code":917828,"complete_code_percent":23.947659,"complete_data":773208,"complete_data_percent":52.84912,"total_units":959,"complete_units":575}},{"timestamp":"2026-10-10T20:25:52Z","commit_sha":"2ebd0279f1286985c92445191de1907fa187055f","commit_message":"Split ov139's header into one per original file\n\nOverlay 139 is six original files, which boundary-scout found by their embedded names: ui_scene.c, touchbar.c,\nmsgsearch.c, yesno_menu.c and frame_list.c, and print_msg.c, a guessed name for the printing function eleven\noverlays call. include/app/ov139.h becomes include/app/ui/<file>.h, each caller includes the ones it uses, and the\noverlay's ID is OVERLAY_APP_UI, which pms_input.c defined again for itself.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T20:16:36Z","commit_sha":"19b3e1ffbb831fbc6fc51af3bcf642d05dda2c5e","commit_message":"Run the agents on cheaper models and add a file-writer agent\n\nboundary-scout runs on Haiku and the other agents on Sonnet, with Opus passed by hand for a function worth it.\nfile-writer writes one original file's C from the asm and probes it, leaving registration, the build and the commit\nto the caller.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T20:08:42Z","commit_sha":"2a2dfad03c45d3b83e1106380f12703f68df9982","commit_message":"tools: organize the scripts into packages by job\n\ntools/scripts held 56 scripts in one directory. They are now packages: tools/build (the build's steps and ROM checks),\ntools/decomp (probing, asm, locals, permuter and the config scripts), tools/data (the JSON data, NARCs and constant\nlists), tools/text (the message files, text sources, ID headers and easy chat words) and tools/script (the field and\nAI script disassemblers). Scripts import each other by package (from tools.data.datajson import load) after putting\nthe repository's root on the path, and every reference to a script's path is updated: configure.py, CI, the docs,\nskills, agents, schemas and source comments. tools/README.md describes the layout.\n\n.gitignore ignored every directory named build, which hid tools/build; it now ignores only the root's.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T20:01:46Z","commit_sha":"39c9dc41a074636fda48e7b6c55c3e67ed3f8d20","commit_message":"Name the easy chat words\n\nThe thirteen word categories' message files are named after the input screen's categories (pms_words_greetings.txt\nand the rest, by their word counts in pms_input_data.c), and the types' capitalized names come from data/types.\npms_words.py generates constants/pms_words.h from them: each category's index, first word and count, the species',\nmoves', types' and abilities' words by their constants (PMS_WORD_SPECIES(SPECIES_PIKACHU)), and every other word by\nits category and message ID (PMS_WORD_GREETINGS_HELLO). The input screen's word lists, the word groups, the excluded\nand default words and the categories' counts and files use them.\n\nMessage IDs no longer drop a capital É: the 111 IDs that turned POKÉMON into PokMon are fixed.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:54:35Z","commit_sha":"14b836e6aa0dfab80a329060ad385ddf70c897b2","commit_message":"Show decomp.dev's live treemap and badges in the README\n\ndecomp.dev now reads CI's reports, so the README links its treemap and progress badges instead of a committed image\nand line. docs/progress.svg and progress_image.py, which made them by hand, are gone.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:51:46Z","commit_sha":"eb5c8e176742041dd09c9fdd8761a3acb77b309f","commit_message":"Move the town map's places to JSON and name the arrival flags\n\ndata/town_map/places.json is a/0/8/5 for both versions: each place's zone, markers, touch area, fly and show flags,\nhabitat map area, and its description and landmarks as messages of town_map.txt (TEXT_BANK_0377, renamed), with a\ndescription per version where Black 2 and White 2 differ. Every TOWNMAP_PARAM_* the code reads now has a name.\n\nThe places' flags name the arrival flags (EVENT_FLAG_ARRIVED_*), which the respawn table and the Pokemon Center's medal\nchecks use too. Work 0x4044 is where the town map shows the Plasma Frigate (PWT, Route 21, Giant Chasm or its own\nplace), not the PWT hall, so it and its pseudo flag are renamed; the pseudo flags move to constants/town_map.h.\nrename_constant.py now renames a message file's IDs and header with it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:42:22Z","commit_sha":"6192c5abfce0ad79ac6fffa120bd9cee14100fd9","commit_message":"Move the field and battle lighting to JSON\n\nThe lighting sets of a/0/6/0 and a/0/6/1 are data/lights/{field,battle}/<n>.json, each the periods of the day that\nFieldLight_FlushCore applies: the four lights, the material colors, the fog's and the clear color. light_data.py\npacks them; both ROMs rebuild byte for byte.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:38:57Z","commit_sha":"35d4b2cff8391cdaa5848300abfd41a229de86c1","commit_message":"Move the map matrices and the areas to JSON\n\nAs pokeplatinum's res/field/matrices/, each map matrix (a/0/0/9) is data/map_matrices/<matrix>.json, a grid\nof its cells' maps and, for the overworld's, of their zones by name, with a row per line so the file reads\nas the grid; map_matrices.txt names them after the first zone that uses them, and the overworld's\nMAP_MATRIX_OVERWORLD, and zone headers name their matrix. The area records (a/0/1/3, AreaData) are\ndata/areas/areas.json, as pokeplatinum's area_data. Both pack back to the originals.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:35:05Z","commit_sha":"d3d05dd9816b79547fcc5d15b0d97b0766e0e3ea","commit_message":"Name every event flag and variable\n\nflags.txt and vars.txt now list every flag and variable in the ranges the event work code gives: the saved\nflags from 1 (EventWork_GetFlagBytePtr's 0x17f bytes), each trainer's from 0x5f0 (TrainerFlagGet), named\nafter it, EVENT_FLAG_TRAINER_LEADER_CHEREN, the daily ones from 0xaa0 to 0xb03 (EventWork_ResetDailyFlags),\nthe hidden items' from 0xb04 (HIDDEN_ITEM_FLAG_START), and the 64 temporary ones from 0x4000; and the\nvariables from 0x4000 to 0x41ae (the flags follow them at 0x35e). As pokeplatinum's vars_flags.txt, the ones\nnothing names yet are placeholders by value, EVENT_FLAG_0x0404, which rename_constant.py can rename, and\nthe field scripts and events use the names. make_constants.py --flags writes the lists, keeping the names\ngiven. The ROMs match.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:31:21Z","commit_sha":"0d221088f72be4a7543dc6919df757d498052949","commit_message":"Name the messages the C code reads where its bank is known\n\nWhere a file loads a MsgData from one bank, its reads of messages by number now name them,\nGFL_MsgDataLoadStrbufNew(msgData, Bank0359_Text_Yes), including the bank's header text/<archive>/<bank>.h:\n176 calls in 34 files. The 230 other reads use a MsgData whose bank the file doesn't show (passed in, or\nloaded elsewhere), and keep their numbers until their bank is traced. The code is unchanged; the ROMs match.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:29:53Z","commit_sha":"3a11a4eba58f6570323323fa9152814860712ef4","commit_message":"Name the messages the field scripts show\n\nfield_script.py now writes a message argument as the message's ID from its bank's file (the zone's, a\nglobal script's, or the one a command names), and each script file includes the header of the banks it\nnames, text/script/<bank>.h: 6,573 arguments, as ActorMsgGendered 1024, AspertiaCity3_Text_IfLosesHisWay,\n... The text comments stay. A script line no longer changes meaning when a message is added before it, and\nthe archive still matches.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:29:41Z","commit_sha":"fd0b1b942d8cca5c4a34534e8082e29aad8ee288","commit_message":"Move CI to Node 24 actions and Ubuntu 26.04\n\ncheckout v7, cache v6, setup-python v7 and upload-artifact v7 run on Node 24, which ends the Node 20 deprecation\nwarnings. The runners are pinned to ubuntu-26.04, which ubuntu-latest becomes from 2026-10-19.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:28:03Z","commit_sha":"ab1c6ce7bd4366ec47ab1c73334eea809ca95aa9","commit_message":"Give every message an ID, and generate a header of each bank's IDs\n\nAs pokeplatinum's text banks name their messages, every message line of data/text/ now starts with its ID,\n\"BlackCity2_Text_ListenUpTheresNothing = Listen up!...\": its bank's name and words of the message, unique in\nits bank, which can be renamed freely. text_ids.py writes each bank's IDs into a header the build makes,\ntext/system/<bank>.h and text/script/<bank>.h, counting the messages that \\from lines stand for, so the code\nand the scripts can name messages instead of counting lines, and adding a line doesn't change what they\nname. text_data.py packs the lines without their IDs and unpack writes them. The text still matches.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:27:25Z","commit_sha":"ab286dd79fb3eb6976e55f27b7f9c80d8f3ce0fd","commit_message":"Drop the manual extract step from the worktree setup\n\nninja now extracts the ROM before generating the linker script, so a new worktree builds with a plain ninja.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:24:40Z","commit_sha":"0df790324722ca2d90dbf35e742c422b5e4b0d88","commit_message":"Load the message files by their constants in the C code\n\nThe 133 calls that loaded a message file by number, and the defines they used, now name it:\nGFL_MsgSysLoadData(FALSE, ARCID_SYSTEM_MESSAGE, TEXT_BANK_TRADE_NAMES, heapId), with the archive named too,\nfrom the generated constants/text_banks.h and constants/script_text_banks.h. Where a define named a file\nbetter than its old file name did, the bank is renamed after it: TEXT_BANK_TRAINER_MESSAGES,\nTEXT_BANK_BATTLE_INST_START_MESSAGES and _LOSE_MESSAGES, TEXT_BANK_YES_NO, TEXT_BANK_MEMO,\nTEXT_BANK_SAVE_ERROR, TEXT_BANK_WIFI_ERROR, TEXT_BANK_GAME_BEACON and the Easy Chat input's\nTEXT_BANK_PMS_INPUT and TEXT_BANK_PMS_CATEGORIES. The code is unchanged and both ROMs match.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}},{"timestamp":"2026-10-10T19:23:29Z","commit_sha":"a59e2fb029ff955db4b0534bf5ee4f407ec69f63","commit_message":"Make the linker script wait for the extracted ROM\n\ndsd lcf loads extract/<version>/config.yaml, but its build step didn't depend on it, so a fresh checkout failed\nunless the ROM was extracted first, as in CI.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":48.00921,"total_code":3832642,"matched_code":1701470,"matched_code_percent":44.39418,"total_data":1463048,"matched_data":96804,"matched_data_percent":6.6165977,"total_functions":41672,"matched_functions":20183,"matched_functions_percent":48.433,"complete_code":917426,"complete_code_percent":23.937168,"complete_data":773208,"complete_data_percent":52.84912,"total_units":957,"complete_units":574}}]