From dfdd13cd2c93ea532500ba8b7414dfe12a29e1ee Mon Sep 17 00:00:00 2001 From: Joshua Nierentz Date: Tue, 3 Nov 2026 07:00:39 +0100 Subject: [PATCH 1/2] Match 52 PAL resident game functions --- README.md | 8 +- config/pal/map.tsv | 52 + config/us/map.tsv | 52 + progress/pal/report.json | 2426 +++++++++++++++++++++++++++++--------- src/pal/game/004337F0.c | 12 + src/pal/game/0043A5B0.c | 32 + src/pal/game/0044D8E0.c | 21 + src/pal/game/0044DFE0.c | 19 + src/pal/game/0044E158.c | 17 + src/pal/game/00457DA8.c | 11 + src/pal/game/0045D188.c | 23 + src/pal/game/0045DFC8.c | 18 + src/pal/game/004656C8.c | 23 + src/pal/game/00465B00.c | 17 + src/pal/game/0048AE78.c | 18 + src/pal/game/004976D0.c | 26 + src/pal/game/004A8F40.c | 15 + src/pal/game/004AE890.c | 17 + src/pal/game/004B0BB0.c | 26 + src/pal/game/004B3050.c | 25 + src/pal/game/004B5988.c | 15 + src/pal/game/004B5F70.c | 28 + src/pal/game/004B85B0.c | 24 + src/pal/game/004C8108.c | 20 + src/pal/game/004CCFE8.c | 23 + src/pal/game/004CD9B8.c | 31 + src/pal/game/004D0618.c | 36 + src/pal/game/004D6468.c | 28 + src/pal/game/004D6EE8.c | 25 + src/pal/game/004E3D58.c | 40 + src/pal/game/004E5B78.c | 26 + src/pal/game/004E88B8.c | 24 + src/pal/game/004F08E0.c | 41 + src/pal/game/00501BC8.c | 40 + src/pal/game/00504E10.c | 21 + src/pal/game/005055E8.c | 52 + src/pal/game/00505B40.c | 61 + src/pal/game/00505D18.c | 52 + src/pal/game/005060D8.c | 55 + src/pal/game/00506590.c | 52 + src/pal/game/00506A70.c | 61 + src/pal/game/00506C08.c | 29 + src/pal/game/00506F68.c | 49 + src/pal/game/005071B8.c | 51 + src/pal/game/00507758.c | 51 + src/pal/game/00509738.c | 34 + src/pal/game/00509850.c | 43 + src/pal/game/00509960.c | 42 + src/pal/game/0050A660.c | 34 + src/pal/game/0050B5F8.c | 43 + src/pal/game/0050C980.c | 41 + src/pal/game/005125F8.c | 38 + src/pal/game/00526848.c | 16 + src/pal/game/0053E0A0.c | 21 + src/pal/game/0054B968.c | 16 + src/pal/game/0054E148.c | 10 + 56 files changed, 3590 insertions(+), 541 deletions(-) create mode 100644 src/pal/game/004337F0.c create mode 100644 src/pal/game/0043A5B0.c create mode 100644 src/pal/game/0044D8E0.c create mode 100644 src/pal/game/0044DFE0.c create mode 100644 src/pal/game/0044E158.c create mode 100644 src/pal/game/00457DA8.c create mode 100644 src/pal/game/0045D188.c create mode 100644 src/pal/game/0045DFC8.c create mode 100644 src/pal/game/004656C8.c create mode 100644 src/pal/game/00465B00.c create mode 100644 src/pal/game/0048AE78.c create mode 100644 src/pal/game/004976D0.c create mode 100644 src/pal/game/004A8F40.c create mode 100644 src/pal/game/004AE890.c create mode 100644 src/pal/game/004B0BB0.c create mode 100644 src/pal/game/004B3050.c create mode 100644 src/pal/game/004B5988.c create mode 100644 src/pal/game/004B5F70.c create mode 100644 src/pal/game/004B85B0.c create mode 100644 src/pal/game/004C8108.c create mode 100644 src/pal/game/004CCFE8.c create mode 100644 src/pal/game/004CD9B8.c create mode 100644 src/pal/game/004D0618.c create mode 100644 src/pal/game/004D6468.c create mode 100644 src/pal/game/004D6EE8.c create mode 100644 src/pal/game/004E3D58.c create mode 100644 src/pal/game/004E5B78.c create mode 100644 src/pal/game/004E88B8.c create mode 100644 src/pal/game/004F08E0.c create mode 100644 src/pal/game/00501BC8.c create mode 100644 src/pal/game/00504E10.c create mode 100644 src/pal/game/005055E8.c create mode 100644 src/pal/game/00505B40.c create mode 100644 src/pal/game/00505D18.c create mode 100644 src/pal/game/005060D8.c create mode 100644 src/pal/game/00506590.c create mode 100644 src/pal/game/00506A70.c create mode 100644 src/pal/game/00506C08.c create mode 100644 src/pal/game/00506F68.c create mode 100644 src/pal/game/005071B8.c create mode 100644 src/pal/game/00507758.c create mode 100644 src/pal/game/00509738.c create mode 100644 src/pal/game/00509850.c create mode 100644 src/pal/game/00509960.c create mode 100644 src/pal/game/0050A660.c create mode 100644 src/pal/game/0050B5F8.c create mode 100644 src/pal/game/0050C980.c create mode 100644 src/pal/game/005125F8.c create mode 100644 src/pal/game/00526848.c create mode 100644 src/pal/game/0053E0A0.c create mode 100644 src/pal/game/0054B968.c create mode 100644 src/pal/game/0054E148.c diff --git a/README.md b/README.md index 6e78a99ab..6f9fb8d25 100644 --- a/README.md +++ b/README.md @@ -79,11 +79,11 @@ Each distinct function counts once: frontbin's copy of the menus is the main ima | | Functions (exact) | Code (exact) | Fuzzy | | --- | ---: | ---: | ---: | -| **Main program** | 3,139 of 8,945 | 244,748 of 2,202,512 bytes (11.11%) | 11.53% | +| **Main program** | 3,191 of 8,945 | 254,156 of 2,202,512 bytes (11.54%) | 11.96% | | Engine core (core.text) | 770 of 1,668 | 73,268 of 288,232 bytes (25.42%) | 25.98% | | libgcc | 26 of 33 | 6,148 of 10,836 bytes (56.74%) | 56.74% | | Network (net.text) | 494 of 2,441 | 16,240 of 465,620 bytes (3.49%) | 4.50% | -| Resident menus (.text) | 1,846 of 4,786 | 148,512 of 1,422,048 bytes (10.44%) | 10.65% | +| Resident menus (.text) | 1,898 of 4,786 | 157,920 of 1,422,048 bytes (11.11%) | 11.31% | | frontbin's own code | 3 of 17 | 580 of 15,776 bytes (3.68%) | 3.68% | | **Shared level code** | 1,627 of 5,088 | 125,324 of 2,008,520 bytes (6.24%) | 6.89% | | **Level-specific code** | 1,089 of 4,080 | 94,180 of 1,601,892 bytes (5.88%) | 6.29% | @@ -101,9 +101,9 @@ Each distinct function counts once: frontbin's copy of the menus is the main ima | Level 14: Ghost Station (and 34) | 6 of 23 | 444 of 8,884 bytes (5.00%) | 5.00% | | Level 15: Control Level (and 35) | 23 of 134 | 2,540 of 116,624 bytes (2.18%) | 2.18% | | Level 41: Battledome Tower (all 22 multiplayer maps) | 141 of 374 | 14,568 of 140,340 bytes (10.38%) | 12.24% | -| **Total** | 5,855 of 18,113 | 464,252 of 5,812,924 bytes (7.99%) | 8.49% | +| **Total** | 5,907 of 18,113 | 473,660 of 5,812,924 bytes (8.15%) | 8.65% | -Each distinct function counts once: frontbin's copy of the menus is the main image's, and a level function counts once however many of the 47 levels have it. 244,748 bytes (4.21%) are in units with nothing left to decompile. +Each distinct function counts once: frontbin's copy of the menus is the main image's, and a level function counts once however many of the 47 levels have it. 254,156 bytes (4.37%) are in units with nothing left to decompile. diff --git a/config/pal/map.tsv b/config/pal/map.tsv index 9393df2e1..a74032d9e 100644 --- a/config/pal/map.tsv +++ b/config/pal/map.tsv @@ -863,6 +863,7 @@ func_00430C10 src/game/00430C10.c match func_00431098 main:.text:00431098:220,fr func_004312A8 src/game/004312A8.c match func_00431758 main:.text:00431758:12,frontbin:.text:004314D8:12 100.00 func_00431568 src/game/00431568.c match func_00431A18 main:.text:00431A18:68,frontbin:.text:00431798:68 100.00 func_00432630 src/pal/game/00432630.c match func_00432630 main:.text:00432630:88 100.00 +func_004337F0 src/pal/game/004337F0.c match func_004337F0 main:.text:004337F0:168 100.00 func_00433B10 src/pal/game/00433B10.c match func_00433B10 main:.text:00433B10:88 100.00 func_00436970 src/game/00436970.c match func_00436E58 main:.text:00436E58:64,frontbin:.text:00436BD8:64 100.00 func_004369B0 src/game/004369B0.c match func_00436E98 main:.text:00436E98:64,frontbin:.text:00436C18:64 100.00 @@ -892,6 +893,7 @@ func_00439578 src/game/00439578.c match func_00439B70 main:.text:00439B70:72,fro func_00439930 src/game/00439930.c match func_00439F28 main:.text:00439F28:108,frontbin:.text:004397D0:108 100.00 func_00439A08 src/pal/game/00439A08.c match func_00439A08 main:.text:00439A08:144 100.00 func_0043A518 src/game/0043A518.c match func_0043AB10 main:.text:0043AB10:64,frontbin:.text:0043A3B8:64 100.00 +func_0043A5B0 src/pal/game/0043A5B0.c match func_0043A5B0 main:.text:0043A5B0:132 100.00 func_0043A8D8 src/game/0043A8D8.c match func_0043AED0 main:.text:0043AED0:44,frontbin:.text:0043A778:44 100.00 func_0043A908 src/game/0043A908.c match func_0043AF00 main:.text:0043AF00:120,frontbin:.text:0043A7A8:120 100.00 func_0043A988 src/game/0043A988.c match func_0043AF80 main:.text:0043AF80:68,frontbin:.text:0043A828:68 100.00 @@ -925,6 +927,9 @@ func_0044B680 src/game/0044B680.c match func_0044BD28 main:.text:0044BD28:48,fro func_0044D1A8 src/game/0044D1A8.c match func_0044D850 main:.text:0044D850:8,frontbin:.text:0044D0F8:8 100.00 func_0044D668 src/game/0044D668.c match func_0044DD10 main:.text:0044DD10:104,frontbin:.text:0044D5B8:104 100.00 func_0044D860 src/pal/game/0044D860.c match func_0044D860 main:.text:0044D860:128 100.00 +func_0044D8E0 src/pal/game/0044D8E0.c match func_0044D8E0 main:.text:0044D8E0:128 100.00 +func_0044DFE0 src/pal/game/0044DFE0.c match func_0044DFE0 main:.text:0044DFE0:172 100.00 +func_0044E158 src/pal/game/0044E158.c match func_0044E158 main:.text:0044E158:148 100.00 func_0044E528 src/pal/game/0044E528.c match func_0044E528 main:.text:0044E528:132 100.00 func_00452698 src/game/00452698.c match func_00452EC0 main:.text:00452EC0:68,frontbin:.text:00452768:68 100.00 func_00454258 src/game/00454258.c match func_00454A70 main:.text:00454A70:60,frontbin:.text:00454318:60 100.00 @@ -941,6 +946,7 @@ func_00457220 src/game/00457220.c match func_00457A38 main:.text:00457A38:36,fro func_00457278 src/game/00457278.c match func_00457A90 main:.text:00457A90:28,frontbin:.text:00457338:28 100.00 func_004577B0 src/game/004577B0.c match func_00457FC8 main:.text:00457FC8:28,frontbin:.text:00457870:28 100.00 func_00457C90 src/pal/game/00457C90.c match func_00457C90 main:.text:00457C90:92 100.00 +func_00457DA8 src/pal/game/00457DA8.c match func_00457DA8 main:.text:00457DA8:184 100.00 func_00457EB8 src/pal/game/00457EB8.c match func_00457EB8 main:.text:00457EB8:32 100.00 func_00457F00 src/pal/game/00457F00.c match func_00457F00 main:.text:00457F00:136 100.00 func_00457F98 src/pal/game/00457F98.c match func_00457F98 main:.text:00457F98:44 100.00 @@ -971,6 +977,7 @@ func_0045CF60 src/pal/game/0045CF60.c match func_0045CF60 main:.text:0045CF60:72 func_0045CFA8 src/pal/game/0045CFA8.c match func_0045CFA8 main:.text:0045CFA8:156 100.00 func_0045D090 src/game/0045D090.c match func_0045D890 main:.text:0045D890:52,frontbin:.text:0045D138:52 100.00 func_0045D0E0 src/pal/game/0045D0E0.c match func_0045D0E0 main:.text:0045D0E0:120 100.00 +func_0045D188 src/pal/game/0045D188.c match func_0045D188 main:.text:0045D188:200 100.00 func_0045D908 src/pal/game/0045D908.c match func_0045D908 main:.text:0045D908:92 100.00 func_0045DE00 src/game/0045DE00.c match func_0045E618 main:.text:0045E618:52,frontbin:.text:0045DEC0:52 100.00 func_0045DE38 src/game/0045DE38.c match func_0045E650 main:.text:0045E650:80,frontbin:.text:0045DEF8:80 100.00 @@ -978,6 +985,7 @@ func_0045DE88 src/game/0045DE88.c match func_0045E6A0 main:.text:0045E6A0:76,fro func_0045DEE0 src/game/0045DEE0.c match func_0045E6F8 main:.text:0045E6F8:12,frontbin:.text:0045DFA0:12 100.00 func_0045DF28 src/game/0045DF28.c match func_0045E740 main:.text:0045E740:44,frontbin:.text:0045DFE8:44 100.00 func_0045DF58 src/game/0045DF58.c match func_0045E770 main:.text:0045E770:196,frontbin:.text:0045E018:196 100.00 +func_0045DFC8 src/pal/game/0045DFC8.c match func_0045DFC8 main:.text:0045DFC8:216 100.00 func_0045E020 src/game/0045E020.c match func_0045E838 main:.text:0045E838:12,frontbin:.text:0045E0E0:12 100.00 func_0045E080 src/game/0045E080.c match func_0045E898 main:.text:0045E898:80,frontbin:.text:0045E140:80 100.00 func_0045E1E0 src/game/0045E1E0.c match func_0045E9F8 main:.text:0045E9F8:20,frontbin:.text:0045E2A0:20 100.00 @@ -1041,6 +1049,7 @@ func_00465460 src/pal/game/00465460.c match func_00465460 main:.text:00465460:80 func_00465530 src/game/00465530.c match func_00465D78 main:.text:00465D78:108,frontbin:.text:00465620:108 100.00 func_00465678 src/game/00465678.c match func_00465EC0 main:.text:00465EC0:44,frontbin:.text:00465768:44 100.00 func_004656A8 src/game/004656A8.c match func_00465EF0 main:.text:00465EF0:68,frontbin:.text:00465798:68 100.00 +func_004656C8 src/pal/game/004656C8.c match func_004656C8 main:.text:004656C8:164 100.00 func_004656F0 src/game/004656F0.c match func_00465F38 main:.text:00465F38:76,frontbin:.text:004657E0:76 100.00 func_00465740 src/game/00465740.c match func_00465F88 main:.text:00465F88:68,frontbin:.text:00465830:68 100.00 func_00465788 src/game/00465788.c match func_00465FD0 main:.text:00465FD0:116,frontbin:.text:00465878:116 100.00 @@ -1050,6 +1059,7 @@ func_00465980 src/game/00465980.c match func_004661C8 main:.text:004661C8:76,fro func_004659D0 src/game/004659D0.c match func_00466218 main:.text:00466218:76,frontbin:.text:00465AC0:76 100.00 func_00465AB0 src/game/00465AB0.c match func_004662F8 main:.text:004662F8:40,frontbin:.text:00465BA0:40 100.00 func_00465AE8 src/game/00465AE8.c match func_00466330 main:.text:00466330:88,frontbin:.text:00465BD8:88 100.00 +func_00465B00 src/pal/game/00465B00.c match func_00465B00 main:.text:00465B00:132 100.00 func_00465B88 src/pal/game/00465B88.c match func_00465B88 main:.text:00465B88:100 100.00 func_00465C08 src/game/00465C08.c match func_00466450 main:.text:00466450:8,frontbin:.text:00465CF8:8 100.00 func_00465F10 src/game/00465F10.c match func_00466758 main:.text:00466758:8,frontbin:.text:00466000:8 100.00 @@ -1229,6 +1239,7 @@ func_0048A838 src/pal/game/0048A838.c match func_0048A838 main:.text:0048A838:84 func_0048A950 src/game/0048A950.c match func_0048B408 main:.text:0048B408:28,frontbin:.text:0048ACC8:28 100.00 func_0048A970 src/game/0048A970.c match func_0048B428 main:.text:0048B428:56,frontbin:.text:0048ACE8:56 100.00 func_0048AC48 src/game/0048AC48.c match func_0048B700 main:.text:0048B700:32,frontbin:.text:0048AFC0:32 100.00 +func_0048AE78 src/pal/game/0048AE78.c match func_0048AE78 main:.text:0048AE78:112 100.00 func_0048AEB8 src/game/0048AEB8.c match func_0048B970 main:.text:0048B970:120,frontbin:.text:0048B230:120 100.00 func_0048AF30 src/game/0048AF30.c match func_0048B9E8 main:.text:0048B9E8:104,frontbin:.text:0048B2A8:104 100.00 func_0048AF98 src/game/0048AF98.c match func_0048BA50 main:.text:0048BA50:96,frontbin:.text:0048B310:96 100.00 @@ -1304,6 +1315,7 @@ func_004970A0 src/game/004970A0.c match func_00497CF8 main:.text:00497CF8:88,fro func_004970D8 src/pal/game/004970D8.c match func_004970D8 main:.text:004970D8:64 100.00 func_00497438 src/game/00497438.c match func_00498090 main:.text:00498090:32,frontbin:.text:00497950:32 100.00 func_004976C8 src/game/004976C8.c match func_00498320 main:.text:00498320:156,frontbin:.text:00497BE0:156 100.00 +func_004976D0 src/pal/game/004976D0.c match func_004976D0 main:.text:004976D0:160 100.00 func_00497768 src/game/00497768.c match func_004983C0 main:.text:004983C0:168,frontbin:.text:00497C80:168 100.00 func_004977A0 src/pal/game/004977A0.c match func_004977A0 main:.text:004977A0:28 100.00 func_004978B8 src/game/004978B8.c match func_00498510 main:.text:00498510:8,frontbin:.text:00497DD0:8 100.00 @@ -1548,6 +1560,7 @@ func_004A89A0 src/game/004A89A0.c match func_004A9718 main:.text:004A9718:68,fro func_004A8A28 src/pal/game/004A8A28.c match func_004A8A28 main:.text:004A8A28:136 100.00 func_004A8B10 src/game/004A8B10.c match func_004A9888 main:.text:004A9888:184,frontbin:.text:004A9148:184 100.00 func_004A8BD0 src/game/004A8BD0.c match func_004A9948 main:.text:004A9948:88,frontbin:.text:004A9208:88 100.00 +func_004A8F40 src/pal/game/004A8F40.c match func_004A8F40 main:.text:004A8F40:164 100.00 func_004A90A0 src/game/004A90A0.c match func_004A9E18 main:.text:004A9E18:72,frontbin:.text:004A96D8:72 100.00 func_004A9118 src/pal/game/004A9118.c match func_004A9118 main:.text:004A9118:136 100.00 func_004A99A0 src/pal/game/004A99A0.c match func_004A99A0 main:.text:004A99A0:64 100.00 @@ -1582,6 +1595,7 @@ func_004AE220 src/game/004AE220.c match func_004AF0B0 main:.text:004AF0B0:96,fro func_004AE260 src/pal/game/004AE260.c match func_004AE260 main:.text:004AE260:116 100.00 func_004AE280 src/game/004AE280.c match func_004AF110 main:.text:004AF110:32,frontbin:.text:004AE9D0:32 100.00 func_004AE6D8 src/game/004AE6D8.c match func_004AF568 main:.text:004AF568:48,frontbin:.text:004AEE28:48 100.00 +func_004AE890 src/pal/game/004AE890.c match func_004AE890 main:.text:004AE890:132 100.00 func_004AE8A8 src/game/004AE8A8.c match func_004AF738 main:.text:004AF738:100,frontbin:.text:004AEFF8:100 100.00 func_004AF020 src/pal/game/004AF020.c match func_004AF020 main:.text:004AF020:140 100.00 func_004AF168 src/game/004AF168.c match func_004AFFF8 main:.text:004AFFF8:36,frontbin:.text:004AF8B8:36 100.00 @@ -1611,6 +1625,7 @@ func_004B0068 src/game/004B0068.c match func_004B0EF8 main:.text:004B0EF8:100,fr func_004B0158 src/game/004B0158.c match func_004B0FE8 main:.text:004B0FE8:108,frontbin:.text:004B08A8:108 100.00 func_004B01C8 src/game/004B01C8.c match func_004B1058 main:.text:004B1058:36,frontbin:.text:004B0918:36 100.00 func_004B07D8 src/pal/game/004B07D8.c match func_004B07D8 main:.text:004B07D8:76 100.00 +func_004B0BB0 src/pal/game/004B0BB0.c match func_004B0BB0 main:.text:004B0BB0:148 100.00 func_004B0EA0 src/game/004B0EA0.c match func_004B1D30 main:.text:004B1D30:28,frontbin:.text:004B15F0:28 100.00 func_004B0EC0 src/game/004B0EC0.c match func_004B1D50 main:.text:004B1D50:36,frontbin:.text:004B1610:36 100.00 func_004B0F08 src/game/004B0F08.c match func_004B1D98 main:.text:004B1D98:92,frontbin:.text:004B1658:92 100.00 @@ -1631,6 +1646,7 @@ func_004B2BD8 src/game/004B2BD8.c match func_004B3AA0 main:.text:004B3AA0:76,fro func_004B2C28 src/game/004B2C28.c match func_004B3AF0 main:.text:004B3AF0:40,frontbin:.text:004B33B0:40 100.00 func_004B2C50 src/game/004B2C50.c match func_004B3B18 main:.text:004B3B18:48,frontbin:.text:004B33D8:48 100.00 func_004B2EF0 src/game/004B2EF0.c match func_004B3DB8 main:.text:004B3DB8:104,frontbin:.text:004B3678:104 100.00 +func_004B3050 src/pal/game/004B3050.c match func_004B3050 main:.text:004B3050:160 100.00 func_004B3DE0 src/game/004B3DE0.c match func_004B4CA8 main:.text:004B4CA8:60,frontbin:.text:004B4568:60 100.00 func_004B3EA8 src/game/004B3EA8.c match func_004B4D70 main:.text:004B4D70:80,frontbin:.text:004B4630:80 100.00 func_004B4A40 src/game/004B4A40.c match func_004B5930 main:.text:004B5930:84,frontbin:.text:004B51F0:84 100.00 @@ -1647,8 +1663,10 @@ func_004B5478 src/game/004B5478.c match func_004B6368 main:.text:004B6368:92,fro func_004B5550 src/game/004B5550.c match func_004B6440 main:.text:004B6440:96,frontbin:.text:004B5D00:96 100.00 func_004B56B8 src/game/004B56B8.c match func_004B65A8 main:.text:004B65A8:60,frontbin:.text:004B5E68:60 100.00 func_004B5970 src/game/004B5970.c match func_004B6860 main:.text:004B6860:28,frontbin:.text:004B6120:28 100.00 +func_004B5988 src/pal/game/004B5988.c match func_004B5988 main:.text:004B5988:232 100.00 func_004B5DF8 src/game/004B5DF8.c match func_004B6CE8 main:.text:004B6CE8:28,frontbin:.text:004B65A8:28 100.00 func_004B5E18 src/game/004B5E18.c match func_004B6D08 main:.text:004B6D08:88,frontbin:.text:004B65C8:88 100.00 +func_004B5F70 src/pal/game/004B5F70.c match func_004B5F70 main:.text:004B5F70:180 100.00 func_004B5F78 src/game/004B5F78.c match func_004B6E68 main:.text:004B6E68:116,frontbin:.text:004B6728:116 100.00 func_004B6950 src/game/004B6950.c match func_004B7840 main:.text:004B7840:28,frontbin:.text:004B7100:28 100.00 func_004B6970 src/game/004B6970.c match func_004B7860 main:.text:004B7860:28,frontbin:.text:004B7120:28 100.00 @@ -1698,6 +1716,7 @@ func_004B7D60 src/game/004B7D60.c match func_004B8C50 main:.text:004B8C50:112,fr func_004B7DD0 src/game/004B7DD0.c match func_004B8CC0 main:.text:004B8CC0:112,frontbin:.text:004B8580:112 100.00 func_004B7E40 src/game/004B7E40.c match func_004B8D30 main:.text:004B8D30:56,frontbin:.text:004B85F0:56 100.00 func_004B80D0 src/game/004B80D0.c match func_004B8FC0 main:.text:004B8FC0:136,frontbin:.text:004B8880:136 100.00 +func_004B85B0 src/pal/game/004B85B0.c match func_004B85B0 main:.text:004B85B0:140 100.00 func_004B8908 src/game/004B8908.c match func_004B97F8 main:.text:004B97F8:28,frontbin:.text:004B90B8:28 100.00 func_004B8AA8 src/game/004B8AA8.c match func_004B9998 main:.text:004B9998:120,frontbin:.text:004B9258:120 100.00 func_004B8C20 src/game/004B8C20.c match func_004B9B10 main:.text:004B9B10:48,frontbin:.text:004B93D0:48 100.00 @@ -1803,6 +1822,7 @@ func_004C74E0 src/game/004C74E0.c match func_004C8308 main:.text:004C8308:84,fro func_004C7600 src/pal/game/004C7600.c match func_004C7600 main:.text:004C7600:144 100.00 func_004C7670 src/game/004C7670.c match func_004C8498 main:.text:004C8498:56,frontbin:.text:004C7D58:56 100.00 func_004C7EE8 src/pal/game/004C7EE8.c match func_004C7EE8 main:.text:004C7EE8:92 100.00 +func_004C8108 src/pal/game/004C8108.c match func_004C8108 main:.text:004C8108:196 100.00 func_004C8118 src/game/004C8118.c match func_004C8F40 main:.text:004C8F40:112,frontbin:.text:004C8800:112 100.00 func_004C8188 src/game/004C8188.c match func_004C8FB0 main:.text:004C8FB0:40,frontbin:.text:004C8870:40 100.00 func_004C8258 src/game/004C8258.c match func_004C9080 main:.text:004C9080:100,frontbin:.text:004C8940:100 100.00 @@ -1859,6 +1879,7 @@ func_004CC780 src/game/004CC780.c match func_004CD620 main:.text:004CD620:28,fro func_004CCDA0 src/game/004CCDA0.c match func_004CDC40 main:.text:004CDC40:28,frontbin:.text:004CD500:28 100.00 func_004CCE70 src/game/004CCE70.c match func_004CDD10 main:.text:004CDD10:84,frontbin:.text:004CD5D0:84 100.00 func_004CCFD0 src/game/004CCFD0.c match func_004CDE70 main:.text:004CDE70:8,frontbin:.text:004CD730:8 100.00 +func_004CCFE8 src/pal/game/004CCFE8.c match func_004CCFE8 main:.text:004CCFE8:192 100.00 func_004CCFFC src/game/004CCFFC.c match func_0048F648 main:.text:0048F648:8,frontbin:.text:0048EF08:8 100.00 func_004CD008 src/game/004CD008.c match func_004CDEA8 main:.text:004CDEA8:64,frontbin:.text:004CD768:64 100.00 func_004CD5F0 src/game/004CD5F0.c match func_004CE490 main:.text:004CE490:44,frontbin:.text:004CDD50:44 100.00 @@ -1869,6 +1890,7 @@ func_004CD818 src/pal/game/004CD818.c match func_004CD818 main:.text:004CD818:13 func_004CD890 src/game/004CD890.c match func_004CE730 main:.text:004CE730:40,frontbin:.text:004CDFF0:40 100.00 func_004CD8B8 src/game/004CD8B8.c match func_004CE758 main:.text:004CE758:132,frontbin:.text:004CE018:132 100.00 func_004CD940 src/game/004CD940.c match func_004CE7E0 main:.text:004CE7E0:56,frontbin:.text:004CE0A0:56 100.00 +func_004CD9B8 src/pal/game/004CD9B8.c match func_004CD9B8 main:.text:004CD9B8:204 100.00 func_004CDC10 src/game/004CDC10.c match func_004CEAB0 main:.text:004CEAB0:184,frontbin:.text:004CE370:184 100.00 func_004CDE78 src/pal/game/004CDE78.c match func_004CDE78 main:.text:004CDE78:44 100.00 func_004CDEC8 src/game/004CDEC8.c match func_004CED68 main:.text:004CED68:64,frontbin:.text:004CE628:64 100.00 @@ -1909,6 +1931,7 @@ func_004D01B0 src/game/004D01B0.c match func_004D1050 main:.text:004D1050:56,fro func_004D03E0 src/game/004D03E0.c match func_004D1280 main:.text:004D1280:192,frontbin:.text:004D0B40:192 100.00 func_004D05A0 src/game/004D05A0.c match func_004D1440 main:.text:004D1440:28,frontbin:.text:004D0D00:28 100.00 func_004D05C0 src/game/004D05C0.c match func_004D1460 main:.text:004D1460:28,frontbin:.text:004D0D20:28 100.00 +func_004D0618 src/pal/game/004D0618.c match func_004D0618 main:.text:004D0618:232 100.00 func_004D0700 src/pal/game/004D0700.c match func_004D0700 main:.text:004D0700:172 100.00 func_004D0830 src/game/004D0830.c match func_004D16D0 main:.text:004D16D0:28,frontbin:.text:004D0F90:28 100.00 func_004D0850 src/game/004D0850.c match func_004D16F0 main:.text:004D16F0:28,frontbin:.text:004D0FB0:28 100.00 @@ -1991,11 +2014,13 @@ func_004D5F68 src/game/004D5F68.c match func_004D6E80 main:.text:004D6E80:104,fr func_004D6098 src/game/004D6098.c match func_004D6FB0 main:.text:004D6FB0:168,frontbin:.text:004D6870:168 100.00 func_004D6140 src/game/004D6140.c match func_004D7058 main:.text:004D7058:56,frontbin:.text:004D6918:56 100.00 func_004D6178 src/game/004D6178.c match func_004D7090 main:.text:004D7090:136,frontbin:.text:004D6950:136 100.00 +func_004D6468 src/pal/game/004D6468.c match func_004D6468 main:.text:004D6468:184 100.00 func_004D64A0 src/game/004D64A0.c match func_004D73B8 main:.text:004D73B8:76,frontbin:.text:004D6C78:76 100.00 func_004D67E8 src/pal/game/004D67E8.c match func_004D67E8 main:.text:004D67E8:124 100.00 func_004D6AC8 src/pal/game/004D6AC8.c match func_004D6AC8 main:.text:004D6AC8:64 100.00 func_004D6DD0 src/game/004D6DD0.c match func_004D7CE8 main:.text:004D7CE8:120,frontbin:.text:004D75A8:120 100.00 func_004D6EC0 src/game/004D6EC0.c match func_004D7DD8 main:.text:004D7DD8:128,frontbin:.text:004D7698:128 100.00 +func_004D6EE8 src/pal/game/004D6EE8.c match func_004D6EE8 main:.text:004D6EE8:200 100.00 func_004D7208 src/pal/game/004D7208.c match func_004D7208 main:.text:004D7208:136 100.00 func_004D7240 src/game/004D7240.c match func_004D8158 main:.text:004D8158:8,frontbin:.text:004D7A18:8 100.00 func_004D7250 src/game/004D7250.c match func_004D8168 main:.text:004D8168:336,frontbin:.text:004D7A28:336 100.00 @@ -2098,8 +2123,10 @@ func_004E254C src/game/004E254C.c match func_004E34AC main:.text:004E34AC:8,fron func_004E2568 src/game/004E2568.c match func_004E34C8 main:.text:004E34C8:100,frontbin:.text:004E2D88:100 100.00 func_004E2A78 src/pal/game/004E2A78.c match func_004E2A78 main:.text:004E2A78:60 100.00 func_004E2AF8 src/game/004E2AF8.c match func_004E3A20 main:.text:004E3A20:72,frontbin:.text:004E3320:72 100.00 +func_004E3D58 src/pal/game/004E3D58.c match func_004E3D58 main:.text:004E3D58:156 100.00 func_004E4CD8 src/game/004E4CD8.c match func_004E5C00 main:.text:004E5C00:92,frontbin:.text:004E5500:92 100.00 func_004E5590 src/game/004E5590.c match func_004E64B8 main:.text:004E64B8:40,frontbin:.text:004E5DB8:40 100.00 +func_004E5B78 src/pal/game/004E5B78.c match func_004E5B78 main:.text:004E5B78:132 100.00 func_004E64E8 src/pal/game/004E64E8.c match func_004E64E8 main:.text:004E64E8:116 100.00 func_004E6F98 src/game/004E6F98.c match func_004E7EC0 main:.text:004E7EC0:8,frontbin:.text:004E77C0:8 100.00 func_004E6FA0 src/game/004E6FA0.c match func_004E7EC8 main:.text:004E7EC8:96,frontbin:.text:004E77C8:96 100.00 @@ -2117,6 +2144,7 @@ func_004E7BE8 src/game/004E7BE8.c match func_004E8B10 main:.text:004E8B10:92,fro func_004E7C48 src/game/004E7C48.c match func_004E8B70 main:.text:004E8B70:92,frontbin:.text:004E8470:92 100.00 func_004E8068 src/game/004E8068.c match func_004E8F90 main:.text:004E8F90:144,frontbin:.text:004E8890:144 100.00 func_004E8298 src/game/004E8298.c match func_004E91C0 main:.text:004E91C0:52,frontbin:.text:004E8AC0:52 100.00 +func_004E88B8 src/pal/game/004E88B8.c match func_004E88B8 main:.text:004E88B8:216 100.00 func_004E8998 src/pal/game/004E8998.c match func_004E8998 main:.text:004E8998:276 100.00 func_004EA790 src/game/004EA790.c match func_004EB6C0 main:.text:004EB6C0:48,frontbin:.text:004EAFC0:48 100.00 func_004EA8B0 src/game/004EA8B0.c match func_004EB7E0 main:.text:004EB7E0:32,frontbin:.text:004EB0E0:32 100.00 @@ -2161,6 +2189,7 @@ func_004F0650 src/game/004F0650.c differs - - 0.00 func_004F0738 src/pal/game/004F0738.c match func_004F0738 main:.text:004F0738:152 100.00 func_004F0778 src/game/004F0778.c match func_004F17E0 main:.text:004F17E0:208,frontbin:.text:004F10E0:208 100.00 func_004F0848 src/game/004F0848.c match func_004F18B0 main:.text:004F18B0:304,frontbin:.text:004F11B0:304 100.00 +func_004F08E0 src/pal/game/004F08E0.c match func_004F08E0 main:.text:004F08E0:208 100.00 func_004F0978 src/game/004F0978.c match func_004F19E0 main:.text:004F19E0:24,frontbin:.text:004F12E0:24 100.00 func_004F0990 src/game/004F0990.c match func_004F19F8 main:.text:004F19F8:8,frontbin:.text:004F12F8:8 100.00 func_004F0998 src/game/004F0998.c match func_004F1A00 main:.text:004F1A00:48,frontbin:.text:004F1300:48 100.00 @@ -2350,6 +2379,7 @@ func_00501B08 src/game/00501B08.c match func_00502B78 main:.text:00502B78:32,fro func_00501B28 src/game/00501B28.c match func_00502B98 main:.text:00502B98:32,frontbin:.text:00502498:32 100.00 func_00501B58 src/pal/game/00501B58.c match func_00501B58 main:.text:00501B58:112 100.00 func_00501BA0 src/game/00501BA0.c match func_00502C10 main:.text:00502C10:40,frontbin:.text:00502510:40 100.00 +func_00501BC8 src/pal/game/00501BC8.c match func_00501BC8 main:.text:00501BC8:200 100.00 func_00501C90 src/pal/game/00501C90.c match func_00501C90 main:.text:00501C90:128 100.00 func_00501D70 src/game/00501D70.c match func_00502DE0 main:.text:00502DE0:92,frontbin:.text:005026E0:92 100.00 func_00501DD0 src/game/00501DD0.c match func_00502E40 main:.text:00502E40:36,frontbin:.text:00502740:36 100.00 @@ -2379,17 +2409,28 @@ func_00504228 src/game/00504228.c match func_005052C0 main:.text:005052C0:8,fron func_00504230 src/game/00504230.c match func_005052C8 main:.text:005052C8:8,frontbin:.text:00504BC8:8 100.00 func_00504840 src/game/00504840.c match func_005058D8 main:.text:005058D8:108,frontbin:.text:005051D8:108 100.00 func_00504AF0 src/pal/game/00504AF0.c match func_00504AF0 main:.text:00504AF0:144 100.00 +func_00504E10 src/pal/game/00504E10.c match func_00504E10 main:.text:00504E10:160 100.00 func_00504F10 src/pal/game/00504F10.c match func_00504F10 main:.text:00504F10:92 100.00 +func_005055E8 src/pal/game/005055E8.c match func_005055E8 main:.text:005055E8:244 100.00 func_00505AD8 src/game/00505AD8.c match func_00506B70 main:.text:00506B70:72,frontbin:.text:00506470:72 100.00 func_00505B20 src/game/00505B20.c match func_00506BB8 main:.text:00506BB8:68,frontbin:.text:005064B8:68 100.00 +func_00505B40 src/pal/game/00505B40.c match func_00505B40 main:.text:00505B40:228 100.00 func_00505C08 src/game/00505C08.c match func_00506CA0 main:.text:00506CA0:128,frontbin:.text:005065A0:128 100.00 func_00505C90 src/game/00505C90.c match func_00506D28 main:.text:00506D28:128,frontbin:.text:00506628:128 100.00 +func_00505D18 src/pal/game/00505D18.c match func_00505D18 main:.text:00505D18:228 100.00 func_00505D30 src/game/00505D30.c match func_00506DC8 main:.text:00506DC8:124,frontbin:.text:005066C8:124 100.00 +func_005060D8 src/pal/game/005060D8.c match func_005060D8 main:.text:005060D8:212 100.00 +func_00506590 src/pal/game/00506590.c match func_00506590 main:.text:00506590:228 100.00 func_005065D8 src/game/005065D8.c match func_00507670 main:.text:00507670:32,frontbin:.text:00506F70:32 100.00 func_00506860 src/game/00506860.c match func_005078F8 main:.text:005078F8:208,frontbin:.text:005071F8:208 100.00 +func_00506A70 src/pal/game/00506A70.c match func_00506A70 main:.text:00506A70:228 100.00 func_00506A78 src/game/00506A78.c match func_00507B10 main:.text:00507B10:248,frontbin:.text:00507410:248 100.00 func_00506B70 src/game/00506B70.c match func_00507C08 main:.text:00507C08:28,frontbin:.text:00507508:28 100.00 func_00506B90 src/game/00506B90.c match func_00507C28 main:.text:00507C28:20,frontbin:.text:00507528:20 100.00 +func_00506C08 src/pal/game/00506C08.c match func_00506C08 main:.text:00506C08:140 100.00 +func_00506F68 src/pal/game/00506F68.c match func_00506F68 main:.text:00506F68:200 100.00 +func_005071B8 src/pal/game/005071B8.c match func_005071B8 main:.text:005071B8:184 100.00 +func_00507758 src/pal/game/00507758.c match func_00507758 main:.text:00507758:200 100.00 func_00507958 src/game/00507958.c match func_005089F0 main:.text:005089F0:68,frontbin:.text:005082F0:68 100.00 func_00508328 src/game/00508328.c match func_005093C0 main:.text:005093C0:100,frontbin:.text:00508CC0:100 100.00 func_00508450 src/game/00508450.c match func_005094E8 main:.text:005094E8:104,frontbin:.text:00508DE8:104 100.00 @@ -2436,11 +2477,14 @@ func_00509538 src/game/00509538.c match func_0050A5D0 main:.text:0050A5D0:144,fr func_00509550 src/pal/game/00509550.c match func_00509550 main:.text:00509550:192 100.00 func_00509688 src/game/00509688.c match func_0050A720 main:.text:0050A720:100,frontbin:.text:0050A020:100 100.00 func_005096F0 src/game/005096F0.c match func_0050A788 main:.text:0050A788:104,frontbin:.text:0050A088:104 100.00 +func_00509738 src/pal/game/00509738.c match func_00509738 main:.text:00509738:192 100.00 func_00509758 src/game/00509758.c match func_0050A7F0 main:.text:0050A7F0:104,frontbin:.text:0050A0F0:104 100.00 func_005097C0 src/game/005097C0.c match func_0050A858 main:.text:0050A858:112,frontbin:.text:0050A158:112 100.00 func_00509830 src/game/00509830.c match func_0050A8C8 main:.text:0050A8C8:104,frontbin:.text:0050A1C8:104 100.00 +func_00509850 src/pal/game/00509850.c match func_00509850 main:.text:00509850:192 100.00 func_00509898 src/game/00509898.c match func_0050A930 main:.text:0050A930:104,frontbin:.text:0050A230:104 100.00 func_00509900 src/game/00509900.c match func_0050A998 main:.text:0050A998:120,frontbin:.text:0050A298:120 100.00 +func_00509960 src/pal/game/00509960.c match func_00509960 main:.text:00509960:192 100.00 func_00509978 src/game/00509978.c match func_0050AA10 main:.text:0050AA10:100,frontbin:.text:0050A310:100 100.00 func_005099E0 src/game/005099E0.c match func_0050AA78 main:.text:0050AA78:80,frontbin:.text:0050A378:80 100.00 func_00509B18 src/game/00509B18.c match func_0050ABB0 main:.text:0050ABB0:112,frontbin:.text:0050A4B0:112 100.00 @@ -2464,6 +2508,7 @@ func_0050A338 src/game/0050A338.c match func_0050B3D0 main:.text:0050B3D0:100,fr func_0050A3A0 src/game/0050A3A0.c match func_0050B438 main:.text:0050B438:80,frontbin:.text:0050AD38:80 100.00 func_0050A4D8 src/game/0050A4D8.c match func_0050B570 main:.text:0050B570:136,frontbin:.text:0050AE70:136 100.00 func_0050A620 src/game/0050A620.c match func_0050B6B8 main:.text:0050B6B8:84,frontbin:.text:0050AFB8:84 100.00 +func_0050A660 src/pal/game/0050A660.c match func_0050A660 main:.text:0050A660:192 100.00 func_0050A678 src/game/0050A678.c match func_0050B710 main:.text:0050B710:84,frontbin:.text:0050B010:84 100.00 func_0050A6D0 src/game/0050A6D0.c match func_0050B768 main:.text:0050B768:100,frontbin:.text:0050B068:100 100.00 func_0050A738 src/game/0050A738.c match func_0050B7D0 main:.text:0050B7D0:104,frontbin:.text:0050B0D0:104 100.00 @@ -2497,6 +2542,7 @@ func_0050B4A0 src/game/0050B4A0.c match func_0050C538 main:.text:0050C538:112,fr func_0050B510 src/game/0050B510.c match func_0050C5A8 main:.text:0050C5A8:104,frontbin:.text:0050BEA8:104 100.00 func_0050B578 src/game/0050B578.c match func_0050C610 main:.text:0050C610:104,frontbin:.text:0050BF10:104 100.00 func_0050B5E0 src/game/0050B5E0.c match func_0050C678 main:.text:0050C678:120,frontbin:.text:0050BF78:120 100.00 +func_0050B5F8 src/pal/game/0050B5F8.c match func_0050B5F8 main:.text:0050B5F8:192 100.00 func_0050B658 src/game/0050B658.c match func_0050C6F0 main:.text:0050C6F0:100,frontbin:.text:0050BFF0:100 100.00 func_0050B7A8 src/game/0050B7A8.c match func_0050C840 main:.text:0050C840:84,frontbin:.text:0050C140:84 100.00 func_0050B800 src/game/0050B800.c match func_0050C898 main:.text:0050C898:84,frontbin:.text:0050C198:84 100.00 @@ -2520,6 +2566,7 @@ func_0050C570 src/game/0050C570.c match func_0050D608 main:.text:0050D608:76,fro func_0050C5C0 src/game/0050C5C0.c match func_0050D658 main:.text:0050D658:112,frontbin:.text:0050CF58:112 100.00 func_0050C630 src/game/0050C630.c match func_0050D6C8 main:.text:0050D6C8:8,frontbin:.text:0050CFC8:8 100.00 func_0050C740 src/game/0050C740.c match func_0050D7D8 main:.text:0050D7D8:28,frontbin:.text:0050D0D8:28 100.00 +func_0050C980 src/pal/game/0050C980.c match func_0050C980 main:.text:0050C980:192 100.00 func_0050CDB0 src/game/0050CDB0.c match func_0050DE48 main:.text:0050DE48:112,frontbin:.text:0050D748:112 100.00 func_0050CE48 src/game/0050CE48.c match func_0050DEE0 main:.text:0050DEE0:16,frontbin:.text:0050D7E0:16 100.00 func_0050CE58 src/game/0050CE58.c match func_0050DEF0 main:.text:0050DEF0:20,frontbin:.text:0050D7F0:20 100.00 @@ -2598,6 +2645,7 @@ func_00511378 src/game/00511378.c match func_00512450 main:.text:00512450:8,fron func_00511380 src/game/00511380.c match func_00512458 main:.text:00512458:8,frontbin:.text:00511D58:8 100.00 func_00511388 src/game/00511388.c match func_00512460 main:.text:00512460:8,frontbin:.text:00511D60:8 100.00 func_00512370 src/pal/game/00512370.c match func_00512370 main:.text:00512370:44 100.00 +func_005125F8 src/pal/game/005125F8.c match func_005125F8 main:.text:005125F8:200 100.00 func_00512748 src/game/00512748.c match func_00513820 main:.text:00513820:92,frontbin:.text:00513120:92 100.00 func_00512938 src/game/00512938.c match func_00513A10 main:.text:00513A10:8,frontbin:.text:00513310:8 100.00 func_00512D08 src/game/00512D08.c differs - - 0.00 @@ -2636,6 +2684,7 @@ func_00525164 src/game/00525164.c match func_0052635C main:.text:0052635C:8,fron func_00525BF8 src/game/00525BF8.c match func_00526DF0 main:.text:00526DF0:8,frontbin:.text:005266F0:8 100.00 func_00525C00 src/game/00525C00.c match func_00526DF8 main:.text:00526DF8:56,frontbin:.text:005266F8:56 100.00 func_00525C58 src/game/00525C58.c match func_00526E50 main:.text:00526E50:80,frontbin:.text:00526750:80 100.00 +func_00526848 src/pal/game/00526848.c match func_00526848 main:.text:00526848:144 100.00 func_005271C0 src/game/005271C0.c match func_005283B8 main:.text:005283B8:40,frontbin:.text:00527CB8:40 100.00 func_00527310 src/game/00527310.c match func_00528508 main:.text:00528508:48,frontbin:.text:00527E08:48 100.00 func_005273A8 src/game/005273A8.c match func_005285A0 main:.text:005285A0:8,frontbin:.text:00527EA0:8 100.00 @@ -2658,6 +2707,7 @@ func_0053CC88 src/game/0053CC88.c match func_0053E038 main:.text:0053E038:84,fro func_0053DCD0 src/pal/game/0053DCD0.c match func_0053DCD0 main:.text:0053DCD0:200 100.00 func_0053DDA0 src/pal/game/0053DDA0.c match func_0053DDA0 main:.text:0053DDA0:76 100.00 func_0053DF20 src/pal/game/0053DF20.c match func_0053DF20 main:.text:0053DF20:96 100.00 +func_0053E0A0 src/pal/game/0053E0A0.c match func_0053E0A0 main:.text:0053E0A0:184 100.00 func_0053E150 src/game/0053E150.c match func_00549F78 main:.text:00549F78:8,frontbin:.text:00549878:8 100.00 func_0053F4D8 src/pal/game/0053F4D8.c match func_0053F4D8 main:.text:0053F4D8:64 100.00 func_0053F588 src/game/0053F588.c match func_00549F78 main:.text:00549F78:8,frontbin:.text:00549878:8 100.00 @@ -2734,9 +2784,11 @@ func_0054B120 src/pal/game/0054B120.c match func_0054B120 main:.text:0054B120:32 func_0054B208 src/pal/game/0054B208.c match func_0054B208 main:.text:0054B208:128 100.00 func_0054B280 src/game/0054B280.c match func_0054C7E8 main:.text:0054C7E8:52,frontbin:.text:0054C0E8:52 100.00 func_0054B5A8 src/game/0054B5A8.c match func_0054CB10 main:.text:0054CB10:28,frontbin:.text:0054C410:28 100.00 +func_0054B968 src/pal/game/0054B968.c match func_0054B968 main:.text:0054B968:160 100.00 func_0054C0A8 src/pal/game/0054C0A8.c match func_0054C0A8 main:.text:0054C0A8:56 100.00 func_0054C650 src/pal/game/0054C650.c match func_0054C650 main:.text:0054C650:100 100.00 func_0054D3A8 src/game/0054D3A8.c match func_0054E910 main:.text:0054E910:88,frontbin:.text:0054E210:88 100.00 +func_0054E148 src/pal/game/0054E148.c match func_0054E148 main:.text:0054E148:124 100.00 func_0054EB10 src/pal/game/0054EB10.c match func_0054EB10 main:.text:0054EB10:56 100.00 func_01E9B460 src/net/01E9B460.c match func_01E9B460 main:net.text:01E9B460:8 100.00 func_01E9C460 src/net/01E9C460.c match func_01E9C460 main:net.text:01E9C460:52 100.00 diff --git a/config/us/map.tsv b/config/us/map.tsv index 52007369e..b81977cf3 100644 --- a/config/us/map.tsv +++ b/config/us/map.tsv @@ -863,6 +863,7 @@ func_00430C10 src/game/00430C10.c match func_00430C10 main:.text:00430C10:220 10 func_004312A8 src/game/004312A8.c match func_004312A8 main:.text:004312A8:12 100.00 func_00431568 src/game/00431568.c match func_00431568 main:.text:00431568:68 100.00 func_00432630 src/pal/game/00432630.c other - - 0.00 +func_004337F0 src/pal/game/004337F0.c other - - 0.00 func_00433B10 src/pal/game/00433B10.c other - - 0.00 func_00436970 src/game/00436970.c match func_00436970 main:.text:00436970:64 100.00 func_004369B0 src/game/004369B0.c match func_004369B0 main:.text:004369B0:64 100.00 @@ -892,6 +893,7 @@ func_00439578 src/game/00439578.c match func_00439578 main:.text:00439578:72 100 func_00439930 src/game/00439930.c match func_00439930 main:.text:00439930:108 100.00 func_00439A08 src/pal/game/00439A08.c other - - 0.00 func_0043A518 src/game/0043A518.c match func_0043A518 main:.text:0043A518:64 100.00 +func_0043A5B0 src/pal/game/0043A5B0.c other - - 0.00 func_0043A8D8 src/game/0043A8D8.c match func_0043A8D8 main:.text:0043A8D8:44 100.00 func_0043A908 src/game/0043A908.c match func_0043A908 main:.text:0043A908:120 100.00 func_0043A988 src/game/0043A988.c match func_0043A988 main:.text:0043A988:68 100.00 @@ -925,6 +927,9 @@ func_0044B680 src/game/0044B680.c match func_0044B680 main:.text:0044B680:48 100 func_0044D1A8 src/game/0044D1A8.c match func_0044D1A8 main:.text:0044D1A8:8 100.00 func_0044D668 src/game/0044D668.c match func_0044D668 main:.text:0044D668:104 100.00 func_0044D860 src/pal/game/0044D860.c other - - 0.00 +func_0044D8E0 src/pal/game/0044D8E0.c other - - 0.00 +func_0044DFE0 src/pal/game/0044DFE0.c other - - 0.00 +func_0044E158 src/pal/game/0044E158.c other - - 0.00 func_0044E528 src/pal/game/0044E528.c other - - 0.00 func_00452698 src/game/00452698.c match func_00452698 main:.text:00452698:68 100.00 func_00454258 src/game/00454258.c match func_00454258 main:.text:00454258:60 100.00 @@ -941,6 +946,7 @@ func_00457220 src/game/00457220.c match func_00457220 main:.text:00457220:36 100 func_00457278 src/game/00457278.c match func_00457278 main:.text:00457278:28 100.00 func_004577B0 src/game/004577B0.c match func_004577B0 main:.text:004577B0:28 100.00 func_00457C90 src/pal/game/00457C90.c other - - 0.00 +func_00457DA8 src/pal/game/00457DA8.c other - - 0.00 func_00457EB8 src/pal/game/00457EB8.c other - - 0.00 func_00457F00 src/pal/game/00457F00.c other - - 0.00 func_00457F98 src/pal/game/00457F98.c other - - 0.00 @@ -971,6 +977,7 @@ func_0045CF60 src/pal/game/0045CF60.c other - - 0.00 func_0045CFA8 src/pal/game/0045CFA8.c other - - 0.00 func_0045D090 src/game/0045D090.c match func_0045D090 main:.text:0045D090:52 100.00 func_0045D0E0 src/pal/game/0045D0E0.c other - - 0.00 +func_0045D188 src/pal/game/0045D188.c other - - 0.00 func_0045D908 src/pal/game/0045D908.c other - - 0.00 func_0045DE00 src/game/0045DE00.c match func_0045DE00 main:.text:0045DE00:52 100.00 func_0045DE38 src/game/0045DE38.c match func_0045DE38 main:.text:0045DE38:80 100.00 @@ -978,6 +985,7 @@ func_0045DE88 src/game/0045DE88.c match func_0045DE88 main:.text:0045DE88:76 100 func_0045DEE0 src/game/0045DEE0.c match func_0045DEE0 main:.text:0045DEE0:12 100.00 func_0045DF28 src/game/0045DF28.c match func_0045DF28 main:.text:0045DF28:44 100.00 func_0045DF58 src/game/0045DF58.c match func_0045DF58 main:.text:0045DF58:196 100.00 +func_0045DFC8 src/pal/game/0045DFC8.c other - - 0.00 func_0045E020 src/game/0045E020.c match func_0045E020 main:.text:0045E020:12 100.00 func_0045E080 src/game/0045E080.c match func_0045E080 main:.text:0045E080:80 100.00 func_0045E1E0 src/game/0045E1E0.c match func_0045E1E0 main:.text:0045E1E0:20 100.00 @@ -1041,6 +1049,7 @@ func_00465460 src/pal/game/00465460.c other - - 0.00 func_00465530 src/game/00465530.c match func_00465530 main:.text:00465530:108 100.00 func_00465678 src/game/00465678.c match func_00465678 main:.text:00465678:44 100.00 func_004656A8 src/game/004656A8.c match func_004656A8 main:.text:004656A8:68 100.00 +func_004656C8 src/pal/game/004656C8.c other - - 0.00 func_004656F0 src/game/004656F0.c match func_004656F0 main:.text:004656F0:76 100.00 func_00465740 src/game/00465740.c match func_00465740 main:.text:00465740:68 100.00 func_00465788 src/game/00465788.c match func_00465788 main:.text:00465788:116 100.00 @@ -1050,6 +1059,7 @@ func_00465980 src/game/00465980.c match func_00465980 main:.text:00465980:76 100 func_004659D0 src/game/004659D0.c match func_004659D0 main:.text:004659D0:76 100.00 func_00465AB0 src/game/00465AB0.c match func_00465AB0 main:.text:00465AB0:40 100.00 func_00465AE8 src/game/00465AE8.c match func_00465AE8 main:.text:00465AE8:88 100.00 +func_00465B00 src/pal/game/00465B00.c other - - 0.00 func_00465B88 src/pal/game/00465B88.c other - - 0.00 func_00465C08 src/game/00465C08.c match func_00465C08 main:.text:00465C08:8 100.00 func_00465F10 src/game/00465F10.c match func_00465F10 main:.text:00465F10:8 100.00 @@ -1229,6 +1239,7 @@ func_0048A838 src/pal/game/0048A838.c other - - 0.00 func_0048A950 src/game/0048A950.c match func_0048A950 main:.text:0048A950:28,frontbin:.text:00489640:28 100.00 func_0048A970 src/game/0048A970.c match func_0048A970 main:.text:0048A970:56,frontbin:.text:00489660:56 100.00 func_0048AC48 src/game/0048AC48.c match func_0048AC48 main:.text:0048AC48:32,frontbin:.text:00489938:32 100.00 +func_0048AE78 src/pal/game/0048AE78.c other - - 0.00 func_0048AEB8 src/game/0048AEB8.c match func_0048AEB8 main:.text:0048AEB8:120,frontbin:.text:00489BA8:120 100.00 func_0048AF30 src/game/0048AF30.c match func_0048AF30 main:.text:0048AF30:104,frontbin:.text:00489C20:104 100.00 func_0048AF98 src/game/0048AF98.c match func_0048AF98 main:.text:0048AF98:96,frontbin:.text:00489C88:96 100.00 @@ -1304,6 +1315,7 @@ func_004970A0 src/game/004970A0.c match func_004970A0 main:.text:004970A0:88,fro func_004970D8 src/pal/game/004970D8.c other - - 0.00 func_00497438 src/game/00497438.c match func_00497438 main:.text:00497438:32,frontbin:.text:00496128:32 100.00 func_004976C8 src/game/004976C8.c match func_004976C8 main:.text:004976C8:156,frontbin:.text:004963B8:156 100.00 +func_004976D0 src/pal/game/004976D0.c other - - 0.00 func_00497768 src/game/00497768.c match func_00497768 main:.text:00497768:168,frontbin:.text:00496458:168 100.00 func_004977A0 src/pal/game/004977A0.c other - - 0.00 func_004978B8 src/game/004978B8.c match func_004978B8 main:.text:004978B8:8,frontbin:.text:004965A8:8 100.00 @@ -1548,6 +1560,7 @@ func_004A89A0 src/game/004A89A0.c match func_004A89A0 main:.text:004A89A0:68,fro func_004A8A28 src/pal/game/004A8A28.c other - - 0.00 func_004A8B10 src/game/004A8B10.c match func_004A8B10 main:.text:004A8B10:184,frontbin:.text:004A7800:184 100.00 func_004A8BD0 src/game/004A8BD0.c match func_004A8BD0 main:.text:004A8BD0:88,frontbin:.text:004A78C0:88 100.00 +func_004A8F40 src/pal/game/004A8F40.c other - - 0.00 func_004A90A0 src/game/004A90A0.c match func_004A90A0 main:.text:004A90A0:72,frontbin:.text:004A7D90:72 100.00 func_004A9118 src/pal/game/004A9118.c other - - 0.00 func_004A99A0 src/pal/game/004A99A0.c other - - 0.00 @@ -1582,6 +1595,7 @@ func_004AE220 src/game/004AE220.c match func_004AE220 main:.text:004AE220:96,fro func_004AE260 src/pal/game/004AE260.c other - - 0.00 func_004AE280 src/game/004AE280.c match func_004AE280 main:.text:004AE280:32,frontbin:.text:004ACF70:32 100.00 func_004AE6D8 src/game/004AE6D8.c match func_004AE6D8 main:.text:004AE6D8:48,frontbin:.text:004AD3C8:48 100.00 +func_004AE890 src/pal/game/004AE890.c other - - 0.00 func_004AE8A8 src/game/004AE8A8.c match func_004AE8A8 main:.text:004AE8A8:100,frontbin:.text:004AD598:100 100.00 func_004AF020 src/pal/game/004AF020.c other - - 0.00 func_004AF168 src/game/004AF168.c match func_004AF168 main:.text:004AF168:36,frontbin:.text:004ADE58:36 100.00 @@ -1611,6 +1625,7 @@ func_004B0068 src/game/004B0068.c match func_004B0068 main:.text:004B0068:100,fr func_004B0158 src/game/004B0158.c match func_004B0158 main:.text:004B0158:108,frontbin:.text:004AEE48:108 100.00 func_004B01C8 src/game/004B01C8.c match func_004B01C8 main:.text:004B01C8:36,frontbin:.text:004AEEB8:36 100.00 func_004B07D8 src/pal/game/004B07D8.c other - - 0.00 +func_004B0BB0 src/pal/game/004B0BB0.c other - - 0.00 func_004B0EA0 src/game/004B0EA0.c match func_004B0EA0 main:.text:004B0EA0:28,frontbin:.text:004AFB90:28 100.00 func_004B0EC0 src/game/004B0EC0.c match func_004B0EC0 main:.text:004B0EC0:36,frontbin:.text:004AFBB0:36 100.00 func_004B0F08 src/game/004B0F08.c match func_004B0F08 main:.text:004B0F08:92,frontbin:.text:004AFBF8:92 100.00 @@ -1631,6 +1646,7 @@ func_004B2BD8 src/game/004B2BD8.c match func_004B2BD8 main:.text:004B2BD8:76,fro func_004B2C28 src/game/004B2C28.c match func_004B2C28 main:.text:004B2C28:40,frontbin:.text:004B1918:40 100.00 func_004B2C50 src/game/004B2C50.c match func_004B2C50 main:.text:004B2C50:48,frontbin:.text:004B1940:48 100.00 func_004B2EF0 src/game/004B2EF0.c match func_004B2EF0 main:.text:004B2EF0:104,frontbin:.text:004B1BE0:104 100.00 +func_004B3050 src/pal/game/004B3050.c other - - 0.00 func_004B3DE0 src/game/004B3DE0.c match func_004B3DE0 main:.text:004B3DE0:60,frontbin:.text:004B2AD0:60 100.00 func_004B3EA8 src/game/004B3EA8.c match func_004B3EA8 main:.text:004B3EA8:80,frontbin:.text:004B2B98:80 100.00 func_004B4A40 src/game/004B4A40.c match func_004B4A40 main:.text:004B4A40:84,frontbin:.text:004B3730:84 100.00 @@ -1647,8 +1663,10 @@ func_004B5478 src/game/004B5478.c match func_004B5478 main:.text:004B5478:92,fro func_004B5550 src/game/004B5550.c match func_004B5550 main:.text:004B5550:96,frontbin:.text:004B4240:96 100.00 func_004B56B8 src/game/004B56B8.c match func_004B56B8 main:.text:004B56B8:60,frontbin:.text:004B43A8:60 100.00 func_004B5970 src/game/004B5970.c match func_004B5970 main:.text:004B5970:28,frontbin:.text:004B4660:28 100.00 +func_004B5988 src/pal/game/004B5988.c other - - 0.00 func_004B5DF8 src/game/004B5DF8.c match func_004B5DF8 main:.text:004B5DF8:28,frontbin:.text:004B4AE8:28 100.00 func_004B5E18 src/game/004B5E18.c match func_004B5E18 main:.text:004B5E18:88,frontbin:.text:004B4B08:88 100.00 +func_004B5F70 src/pal/game/004B5F70.c other - - 0.00 func_004B5F78 src/game/004B5F78.c match func_004B5F78 main:.text:004B5F78:116,frontbin:.text:004B4C68:116 100.00 func_004B6950 src/game/004B6950.c match func_004B6950 main:.text:004B6950:28,frontbin:.text:004B5640:28 100.00 func_004B6970 src/game/004B6970.c match func_004B6970 main:.text:004B6970:28,frontbin:.text:004B5660:28 100.00 @@ -1698,6 +1716,7 @@ func_004B7D60 src/game/004B7D60.c match func_004B7D60 main:.text:004B7D60:112,fr func_004B7DD0 src/game/004B7DD0.c match func_004B7DD0 main:.text:004B7DD0:112,frontbin:.text:004B6AC0:112 100.00 func_004B7E40 src/game/004B7E40.c match func_004B7E40 main:.text:004B7E40:56,frontbin:.text:004B6B30:56 100.00 func_004B80D0 src/game/004B80D0.c match func_004B80D0 main:.text:004B80D0:136,frontbin:.text:004B6DC0:136 100.00 +func_004B85B0 src/pal/game/004B85B0.c other - - 0.00 func_004B8908 src/game/004B8908.c match func_004B8908 main:.text:004B8908:28,frontbin:.text:004B75F8:28 100.00 func_004B8AA8 src/game/004B8AA8.c match func_004B8AA8 main:.text:004B8AA8:120,frontbin:.text:004B7798:120 100.00 func_004B8C20 src/game/004B8C20.c match func_004B8C20 main:.text:004B8C20:48,frontbin:.text:004B7910:48 100.00 @@ -1803,6 +1822,7 @@ func_004C74E0 src/game/004C74E0.c match func_004C74E0 main:.text:004C74E0:84,fro func_004C7600 src/pal/game/004C7600.c other - - 0.00 func_004C7670 src/game/004C7670.c match func_004C7670 main:.text:004C7670:56,frontbin:.text:004C6360:56 100.00 func_004C7EE8 src/pal/game/004C7EE8.c other - - 0.00 +func_004C8108 src/pal/game/004C8108.c other - - 0.00 func_004C8118 src/game/004C8118.c match func_004C8118 main:.text:004C8118:112,frontbin:.text:004C6E08:112 100.00 func_004C8188 src/game/004C8188.c match func_004C8188 main:.text:004C8188:40,frontbin:.text:004C6E78:40 100.00 func_004C8258 src/game/004C8258.c match func_004C8258 main:.text:004C8258:100,frontbin:.text:004C6F48:100 100.00 @@ -1859,6 +1879,7 @@ func_004CC780 src/game/004CC780.c match func_004CC780 main:.text:004CC780:28,fro func_004CCDA0 src/game/004CCDA0.c match func_004CCDA0 main:.text:004CCDA0:28,frontbin:.text:004CBA90:28 100.00 func_004CCE70 src/game/004CCE70.c match func_004CCE70 main:.text:004CCE70:84,frontbin:.text:004CBB60:84 100.00 func_004CCFD0 src/game/004CCFD0.c match func_004CCFD0 main:.text:004CCFD0:8,frontbin:.text:004CBCC0:8 100.00 +func_004CCFE8 src/pal/game/004CCFE8.c other - - 0.00 func_004CCFFC src/game/004CCFFC.c match func_004CCFFC main:.text:004CCFFC:8,frontbin:.text:004CBCEC:8 100.00 func_004CD008 src/game/004CD008.c match func_004CD008 main:.text:004CD008:64,frontbin:.text:004CBCF8:64 100.00 func_004CD5F0 src/game/004CD5F0.c match func_004CD5F0 main:.text:004CD5F0:44,frontbin:.text:004CC2E0:44 100.00 @@ -1869,6 +1890,7 @@ func_004CD818 src/pal/game/004CD818.c other - - 0.00 func_004CD890 src/game/004CD890.c match func_004CD890 main:.text:004CD890:40,frontbin:.text:004CC580:40 100.00 func_004CD8B8 src/game/004CD8B8.c match func_004CD8B8 main:.text:004CD8B8:132,frontbin:.text:004CC5A8:132 100.00 func_004CD940 src/game/004CD940.c match func_004CD940 main:.text:004CD940:56,frontbin:.text:004CC630:56 100.00 +func_004CD9B8 src/pal/game/004CD9B8.c other - - 0.00 func_004CDC10 src/game/004CDC10.c match func_004CDC10 main:.text:004CDC10:184,frontbin:.text:004CC900:184 100.00 func_004CDE78 src/pal/game/004CDE78.c other - - 0.00 func_004CDEC8 src/game/004CDEC8.c match func_004CDEC8 main:.text:004CDEC8:64,frontbin:.text:004CCBB8:64 100.00 @@ -1909,6 +1931,7 @@ func_004D01B0 src/game/004D01B0.c match func_004D01B0 main:.text:004D01B0:56,fro func_004D03E0 src/game/004D03E0.c match func_004D03E0 main:.text:004D03E0:192,frontbin:.text:004CF0D0:192 100.00 func_004D05A0 src/game/004D05A0.c match func_004D05A0 main:.text:004D05A0:28,frontbin:.text:004CF290:28 100.00 func_004D05C0 src/game/004D05C0.c match func_004D05C0 main:.text:004D05C0:28,frontbin:.text:004CF2B0:28 100.00 +func_004D0618 src/pal/game/004D0618.c other - - 0.00 func_004D0700 src/pal/game/004D0700.c other - - 0.00 func_004D0830 src/game/004D0830.c match func_004D0830 main:.text:004D0830:28 100.00 func_004D0850 src/game/004D0850.c match func_004D0850 main:.text:004D0850:28,frontbin:.text:004CF540:28 100.00 @@ -1991,11 +2014,13 @@ func_004D5F68 src/game/004D5F68.c match func_004D5F68 main:.text:004D5F68:104,fr func_004D6098 src/game/004D6098.c match func_004D6098 main:.text:004D6098:168,frontbin:.text:004D4D88:168 100.00 func_004D6140 src/game/004D6140.c match func_004D6140 main:.text:004D6140:56,frontbin:.text:004D4E30:56 100.00 func_004D6178 src/game/004D6178.c match func_004D6178 main:.text:004D6178:136,frontbin:.text:004D4E68:136 100.00 +func_004D6468 src/pal/game/004D6468.c other - - 0.00 func_004D64A0 src/game/004D64A0.c match func_004D64A0 main:.text:004D64A0:76,frontbin:.text:004D5190:76 100.00 func_004D67E8 src/pal/game/004D67E8.c other - - 0.00 func_004D6AC8 src/pal/game/004D6AC8.c other - - 0.00 func_004D6DD0 src/game/004D6DD0.c match func_004D6DD0 main:.text:004D6DD0:120,frontbin:.text:004D5AC0:120 100.00 func_004D6EC0 src/game/004D6EC0.c match func_004D6EC0 main:.text:004D6EC0:128,frontbin:.text:004D5BB0:128 100.00 +func_004D6EE8 src/pal/game/004D6EE8.c other - - 0.00 func_004D7208 src/pal/game/004D7208.c other - - 0.00 func_004D7240 src/game/004D7240.c match func_004D7240 main:.text:004D7240:8,frontbin:.text:004D5F30:8 100.00 func_004D7250 src/game/004D7250.c match func_004D7250 main:.text:004D7250:336,frontbin:.text:004D5F40:336 100.00 @@ -2098,8 +2123,10 @@ func_004E254C src/game/004E254C.c match func_004E254C main:.text:004E254C:8,fron func_004E2568 src/game/004E2568.c match func_004E2568 main:.text:004E2568:100,frontbin:.text:004E1258:100 100.00 func_004E2A78 src/pal/game/004E2A78.c other - - 0.00 func_004E2AF8 src/game/004E2AF8.c match func_004E2AF8 main:.text:004E2AF8:72,frontbin:.text:004E1788:72 100.00 +func_004E3D58 src/pal/game/004E3D58.c other - - 0.00 func_004E4CD8 src/game/004E4CD8.c match func_004E4CD8 main:.text:004E4CD8:92,frontbin:.text:004E3968:92 100.00 func_004E5590 src/game/004E5590.c match func_004E5590 main:.text:004E5590:40,frontbin:.text:004E4220:40 100.00 +func_004E5B78 src/pal/game/004E5B78.c other - - 0.00 func_004E64E8 src/pal/game/004E64E8.c other - - 0.00 func_004E6F98 src/game/004E6F98.c match func_004E6F98 main:.text:004E6F98:8,frontbin:.text:004E5C28:8 100.00 func_004E6FA0 src/game/004E6FA0.c match func_004E6FA0 main:.text:004E6FA0:96,frontbin:.text:004E5C30:96 100.00 @@ -2117,6 +2144,7 @@ func_004E7BE8 src/game/004E7BE8.c match func_004E7BE8 main:.text:004E7BE8:92,fro func_004E7C48 src/game/004E7C48.c match func_004E7C48 main:.text:004E7C48:92,frontbin:.text:004E68D8:92 100.00 func_004E8068 src/game/004E8068.c match func_004E8068 main:.text:004E8068:144,frontbin:.text:004E6CF8:144 100.00 func_004E8298 src/game/004E8298.c match func_004E8298 main:.text:004E8298:52,frontbin:.text:004E6F28:52 100.00 +func_004E88B8 src/pal/game/004E88B8.c other - - 0.00 func_004E8998 src/pal/game/004E8998.c other - - 0.00 func_004EA790 src/game/004EA790.c match func_004EA790 main:.text:004EA790:48,frontbin:.text:004E9420:48 100.00 func_004EA8B0 src/game/004EA8B0.c match func_004EA8B0 main:.text:004EA8B0:32,frontbin:.text:004E9540:32 100.00 @@ -2161,6 +2189,7 @@ func_004F0650 src/game/004F0650.c match func_004F0650 main:.text:004F0650:16,fro func_004F0738 src/pal/game/004F0738.c other - - 0.00 func_004F0778 src/game/004F0778.c match func_004F0778 main:.text:004F0778:208,frontbin:.text:004EF408:208 100.00 func_004F0848 src/game/004F0848.c match func_004F0848 main:.text:004F0848:304,frontbin:.text:004EF4D8:304 100.00 +func_004F08E0 src/pal/game/004F08E0.c other - - 0.00 func_004F0978 src/game/004F0978.c match func_004F0978 main:.text:004F0978:24,frontbin:.text:004EF608:24 100.00 func_004F0990 src/game/004F0990.c match func_004F0990 main:.text:004F0990:8,frontbin:.text:004EF620:8 100.00 func_004F0998 src/game/004F0998.c match func_004F0998 main:.text:004F0998:48,frontbin:.text:004EF628:48 100.00 @@ -2350,6 +2379,7 @@ func_00501B08 src/game/00501B08.c match func_00501B08 main:.text:00501B08:32,fro func_00501B28 src/game/00501B28.c match func_00501B28 main:.text:00501B28:32,frontbin:.text:005007B8:32 100.00 func_00501B58 src/pal/game/00501B58.c other - - 0.00 func_00501BA0 src/game/00501BA0.c match func_00501BA0 main:.text:00501BA0:40,frontbin:.text:00500830:40 100.00 +func_00501BC8 src/pal/game/00501BC8.c other - - 0.00 func_00501C90 src/pal/game/00501C90.c other - - 0.00 func_00501D70 src/game/00501D70.c match func_00501D70 main:.text:00501D70:92,frontbin:.text:00500A00:92 100.00 func_00501DD0 src/game/00501DD0.c match func_00501DD0 main:.text:00501DD0:36,frontbin:.text:00500A60:36 100.00 @@ -2379,17 +2409,28 @@ func_00504228 src/game/00504228.c match func_00504228 main:.text:00504228:8,fron func_00504230 src/game/00504230.c match func_00504230 main:.text:00504230:8,frontbin:.text:00502EC0:8 100.00 func_00504840 src/game/00504840.c match func_00504840 main:.text:00504840:108,frontbin:.text:005034D0:108 100.00 func_00504AF0 src/pal/game/00504AF0.c other - - 0.00 +func_00504E10 src/pal/game/00504E10.c other - - 0.00 func_00504F10 src/pal/game/00504F10.c other - - 0.00 +func_005055E8 src/pal/game/005055E8.c other - - 0.00 func_00505AD8 src/game/00505AD8.c match func_00505AD8 main:.text:00505AD8:72,frontbin:.text:00504768:72 100.00 func_00505B20 src/game/00505B20.c match func_00505B20 main:.text:00505B20:68,frontbin:.text:005047B0:68 100.00 +func_00505B40 src/pal/game/00505B40.c other - - 0.00 func_00505C08 src/game/00505C08.c match func_00505C08 main:.text:00505C08:128,frontbin:.text:00504898:128 100.00 func_00505C90 src/game/00505C90.c match func_00505C90 main:.text:00505C90:128,frontbin:.text:00504920:128 100.00 +func_00505D18 src/pal/game/00505D18.c other - - 0.00 func_00505D30 src/game/00505D30.c match func_00505D30 main:.text:00505D30:124,frontbin:.text:005049C0:124 100.00 +func_005060D8 src/pal/game/005060D8.c other - - 0.00 +func_00506590 src/pal/game/00506590.c other - - 0.00 func_005065D8 src/game/005065D8.c match func_005065D8 main:.text:005065D8:32,frontbin:.text:00505268:32 100.00 func_00506860 src/game/00506860.c match func_00506860 main:.text:00506860:208,frontbin:.text:005054F0:208 100.00 +func_00506A70 src/pal/game/00506A70.c other - - 0.00 func_00506A78 src/game/00506A78.c match func_00506A78 main:.text:00506A78:248,frontbin:.text:00505708:248 100.00 func_00506B70 src/game/00506B70.c match func_00506B70 main:.text:00506B70:28,frontbin:.text:00505800:28 100.00 func_00506B90 src/game/00506B90.c match func_00506B90 main:.text:00506B90:20,frontbin:.text:00505820:20 100.00 +func_00506C08 src/pal/game/00506C08.c other - - 0.00 +func_00506F68 src/pal/game/00506F68.c other - - 0.00 +func_005071B8 src/pal/game/005071B8.c other - - 0.00 +func_00507758 src/pal/game/00507758.c other - - 0.00 func_00507958 src/game/00507958.c match func_00507958 main:.text:00507958:68,frontbin:.text:005065E8:68 100.00 func_00508328 src/game/00508328.c match func_00508328 main:.text:00508328:100,frontbin:.text:00506FB8:100 100.00 func_00508450 src/game/00508450.c match func_00508450 main:.text:00508450:104,frontbin:.text:005070E0:104 100.00 @@ -2436,11 +2477,14 @@ func_00509538 src/game/00509538.c match func_00509538 main:.text:00509538:144,fr func_00509550 src/pal/game/00509550.c other - - 0.00 func_00509688 src/game/00509688.c match func_00509688 main:.text:00509688:100,frontbin:.text:00508318:100 100.00 func_005096F0 src/game/005096F0.c match func_005096F0 main:.text:005096F0:104,frontbin:.text:00508380:104 100.00 +func_00509738 src/pal/game/00509738.c other - - 0.00 func_00509758 src/game/00509758.c match func_00509758 main:.text:00509758:104,frontbin:.text:005083E8:104 100.00 func_005097C0 src/game/005097C0.c match func_005097C0 main:.text:005097C0:112,frontbin:.text:00508450:112 100.00 func_00509830 src/game/00509830.c match func_00509830 main:.text:00509830:104,frontbin:.text:005084C0:104 100.00 +func_00509850 src/pal/game/00509850.c other - - 0.00 func_00509898 src/game/00509898.c match func_00509898 main:.text:00509898:104,frontbin:.text:00508528:104 100.00 func_00509900 src/game/00509900.c match func_00509900 main:.text:00509900:120,frontbin:.text:00508590:120 100.00 +func_00509960 src/pal/game/00509960.c other - - 0.00 func_00509978 src/game/00509978.c match func_00509978 main:.text:00509978:100,frontbin:.text:00508608:100 100.00 func_005099E0 src/game/005099E0.c match func_005099E0 main:.text:005099E0:80,frontbin:.text:00508670:80 100.00 func_00509B18 src/game/00509B18.c match func_00509B18 main:.text:00509B18:112,frontbin:.text:005087A8:112 100.00 @@ -2464,6 +2508,7 @@ func_0050A338 src/game/0050A338.c match func_0050A338 main:.text:0050A338:100,fr func_0050A3A0 src/game/0050A3A0.c match func_0050A3A0 main:.text:0050A3A0:80,frontbin:.text:00509030:80 100.00 func_0050A4D8 src/game/0050A4D8.c match func_0050A4D8 main:.text:0050A4D8:136,frontbin:.text:00509168:136 100.00 func_0050A620 src/game/0050A620.c match func_0050A620 main:.text:0050A620:84,frontbin:.text:005092B0:84 100.00 +func_0050A660 src/pal/game/0050A660.c other - - 0.00 func_0050A678 src/game/0050A678.c match func_0050A678 main:.text:0050A678:84,frontbin:.text:00509308:84 100.00 func_0050A6D0 src/game/0050A6D0.c match func_0050A6D0 main:.text:0050A6D0:100,frontbin:.text:00509360:100 100.00 func_0050A738 src/game/0050A738.c match func_0050A738 main:.text:0050A738:104,frontbin:.text:005093C8:104 100.00 @@ -2497,6 +2542,7 @@ func_0050B4A0 src/game/0050B4A0.c match func_0050B4A0 main:.text:0050B4A0:112,fr func_0050B510 src/game/0050B510.c match func_0050B510 main:.text:0050B510:104,frontbin:.text:0050A1A0:104 100.00 func_0050B578 src/game/0050B578.c match func_0050B578 main:.text:0050B578:104,frontbin:.text:0050A208:104 100.00 func_0050B5E0 src/game/0050B5E0.c match func_0050B5E0 main:.text:0050B5E0:120,frontbin:.text:0050A270:120 100.00 +func_0050B5F8 src/pal/game/0050B5F8.c other - - 0.00 func_0050B658 src/game/0050B658.c match func_0050B658 main:.text:0050B658:100,frontbin:.text:0050A2E8:100 100.00 func_0050B7A8 src/game/0050B7A8.c match func_0050B7A8 main:.text:0050B7A8:84,frontbin:.text:0050A438:84 100.00 func_0050B800 src/game/0050B800.c match func_0050B800 main:.text:0050B800:84,frontbin:.text:0050A490:84 100.00 @@ -2520,6 +2566,7 @@ func_0050C570 src/game/0050C570.c match func_0050C570 main:.text:0050C570:76,fro func_0050C5C0 src/game/0050C5C0.c match func_0050C5C0 main:.text:0050C5C0:112,frontbin:.text:0050B250:112 100.00 func_0050C630 src/game/0050C630.c match func_0050C630 main:.text:0050C630:8,frontbin:.text:0050B2C0:8 100.00 func_0050C740 src/game/0050C740.c match func_0050C740 main:.text:0050C740:28,frontbin:.text:0050B3D0:28 100.00 +func_0050C980 src/pal/game/0050C980.c other - - 0.00 func_0050CDB0 src/game/0050CDB0.c match func_0050CDB0 main:.text:0050CDB0:112,frontbin:.text:0050BA40:112 100.00 func_0050CE48 src/game/0050CE48.c match func_0050CE48 main:.text:0050CE48:16,frontbin:.text:0050BAD8:16 100.00 func_0050CE58 src/game/0050CE58.c match func_0050CE58 main:.text:0050CE58:20,frontbin:.text:0050BAE8:20 100.00 @@ -2598,6 +2645,7 @@ func_00511378 src/game/00511378.c match func_00511378 main:.text:00511378:8,fron func_00511380 src/game/00511380.c match func_00511380 main:.text:00511380:8,frontbin:.text:00510010:8 100.00 func_00511388 src/game/00511388.c match func_00511388 main:.text:00511388:8,frontbin:.text:00510018:8 100.00 func_00512370 src/pal/game/00512370.c other - - 0.00 +func_005125F8 src/pal/game/005125F8.c other - - 0.00 func_00512748 src/game/00512748.c match func_00512748 main:.text:00512748:92,frontbin:.text:005113D8:92 100.00 func_00512938 src/game/00512938.c match func_00512938 main:.text:00512938:8,frontbin:.text:005115C8:8 100.00 func_00512D08 src/game/00512D08.c match func_00512D08 main:.text:00512D08:72,frontbin:.text:00511998:72 100.00 @@ -2636,6 +2684,7 @@ func_00525164 src/game/00525164.c match func_00525164 main:.text:00525164:8,fron func_00525BF8 src/game/00525BF8.c match func_00525BF8 main:.text:00525BF8:8,frontbin:.text:00524888:8 100.00 func_00525C00 src/game/00525C00.c match func_00525C00 main:.text:00525C00:56,frontbin:.text:00524890:56 100.00 func_00525C58 src/game/00525C58.c match func_00525C58 main:.text:00525C58:80,frontbin:.text:005248E8:80 100.00 +func_00526848 src/pal/game/00526848.c other - - 0.00 func_005271C0 src/game/005271C0.c match func_005271C0 main:.text:005271C0:40,frontbin:.text:00525E50:40 100.00 func_00527310 src/game/00527310.c match func_00527310 main:.text:00527310:48,frontbin:.text:00525FA0:48 100.00 func_005273A8 src/game/005273A8.c match func_005273A8 main:.text:005273A8:8,frontbin:.text:00526038:8 100.00 @@ -2658,6 +2707,7 @@ func_0053CC88 src/game/0053CC88.c match func_0053CC88 main:.text:0053CC88:84,fro func_0053DCD0 src/pal/game/0053DCD0.c other - - 0.00 func_0053DDA0 src/pal/game/0053DDA0.c other - - 0.00 func_0053DF20 src/pal/game/0053DF20.c other - - 0.00 +func_0053E0A0 src/pal/game/0053E0A0.c other - - 0.00 func_0053E150 src/game/0053E150.c match func_0053E150 main:.text:0053E150:8,frontbin:.text:0053CDE0:8 100.00 func_0053F4D8 src/pal/game/0053F4D8.c other - - 0.00 func_0053F588 src/game/0053F588.c match func_0053F588 main:.text:0053F588:8,frontbin:.text:0053E218:8 100.00 @@ -2734,9 +2784,11 @@ func_0054B120 src/pal/game/0054B120.c other - - 0.00 func_0054B208 src/pal/game/0054B208.c other - - 0.00 func_0054B280 src/game/0054B280.c match func_0054B280 main:.text:0054B280:52,frontbin:.text:00549F10:52 100.00 func_0054B5A8 src/game/0054B5A8.c match func_0054B5A8 main:.text:0054B5A8:28,frontbin:.text:0054A238:28 100.00 +func_0054B968 src/pal/game/0054B968.c other - - 0.00 func_0054C0A8 src/pal/game/0054C0A8.c other - - 0.00 func_0054C650 src/pal/game/0054C650.c other - - 0.00 func_0054D3A8 src/game/0054D3A8.c match func_0054D3A8 main:.text:0054D3A8:88,frontbin:.text:0054C038:88 100.00 +func_0054E148 src/pal/game/0054E148.c other - - 0.00 func_0054EB10 src/pal/game/0054EB10.c other - - 0.00 func_01E9B460 src/net/01E9B460.c match func_01E9B460 main:net.text:01E9B460:8 100.00 func_01E9C460 src/net/01E9C460.c match func_01E9C460 main:net.text:01E9C460:52 100.00 diff --git a/progress/pal/report.json b/progress/pal/report.json index 47e86659d..70f70adb3 100644 --- a/progress/pal/report.json +++ b/progress/pal/report.json @@ -1,34 +1,34 @@ { "version": 2, "measures": { - "fuzzy_match_percent": 8.485854, + "fuzzy_match_percent": 8.6477, "total_code": "5812924", - "matched_code": "464252", - "matched_code_percent": 7.986549, + "matched_code": "473660", + "matched_code_percent": 8.148395, "total_functions": 18113, - "matched_functions": 5855, - "matched_functions_percent": 32.32485, - "complete_code": "244748", - "complete_code_percent": 4.210411, - "total_units": 3173, - "complete_units": 3114 + "matched_functions": 5907, + "matched_functions_percent": 32.611936, + "complete_code": "254156", + "complete_code_percent": 4.372257, + "total_units": 3225, + "complete_units": 3166 }, "categories": [ { "id": "core", "name": "Main program", "measures": { - "fuzzy_match_percent": 11.533332, + "fuzzy_match_percent": 11.96048, "total_code": "2202512", - "matched_code": "244748", - "matched_code_percent": 11.112221, + "matched_code": "254156", + "matched_code_percent": 11.53937, "total_functions": 8945, - "matched_functions": 3139, - "matched_functions_percent": 35.09223, - "complete_code": "244748", - "complete_code_percent": 11.112221, - "total_units": 3158, - "complete_units": 3114 + "matched_functions": 3191, + "matched_functions_percent": 35.673561, + "complete_code": "254156", + "complete_code_percent": 11.53937, + "total_units": 3210, + "complete_units": 3166 } }, { @@ -86,17 +86,17 @@ "id": "menu_text", "name": "Resident menus (.text)", "measures": { - "fuzzy_match_percent": 10.650415, + "fuzzy_match_percent": 11.311996, "total_code": "1422048", - "matched_code": "148512", - "matched_code_percent": 10.443529, + "matched_code": "157920", + "matched_code_percent": 11.10511, "total_functions": 4786, - "matched_functions": 1846, - "matched_functions_percent": 38.570832, + "matched_functions": 1898, + "matched_functions_percent": 39.657334, "complete_code": "0", "complete_code_percent": 0.0, - "total_units": 1868, - "complete_units": 1846 + "total_units": 1920, + "complete_units": 1898 } }, { @@ -99683,6 +99683,41 @@ ] } }, + { + "name": "pal/game/004337F0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "168", + "matched_code": "168", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "168", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004337F0", + "size": "168", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4405232" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004337F0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00433B10", "measures": { @@ -99928,6 +99963,41 @@ ] } }, + { + "name": "pal/game/0043A5B0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "132", + "matched_code": "132", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "132", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0043A5B0", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4433328" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0043A5B0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0043B4F0", "measures": { @@ -100103,6 +100173,111 @@ ] } }, + { + "name": "pal/game/0044D8E0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "128", + "matched_code": "128", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "128", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0044D8E0", + "size": "128", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4511968" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0044D8E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/0044DFE0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "172", + "matched_code": "172", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "172", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0044DFE0", + "size": "172", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4513760" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0044DFE0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/0044E158", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "148", + "matched_code": "148", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "148", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0044E158", + "size": "148", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4514136" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0044E158.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0044E528", "measures": { @@ -100208,6 +100383,41 @@ ] } }, + { + "name": "pal/game/00457DA8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "184", + "matched_code": "184", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "184", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00457DA8", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4554152" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00457DA8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00457EB8", "measures": { @@ -100453,6 +100663,41 @@ ] } }, + { + "name": "pal/game/0045D188", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0045D188", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4575624" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0045D188.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0045D908", "measures": { @@ -100488,6 +100733,41 @@ ] } }, + { + "name": "pal/game/0045DFC8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "216", + "matched_code": "216", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "216", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0045DFC8", + "size": "216", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4579272" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0045DFC8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0045EA10", "measures": { @@ -100838,6 +101118,41 @@ ] } }, + { + "name": "pal/game/004656C8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "164", + "matched_code": "164", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "164", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004656C8", + "size": "164", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4609736" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004656C8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00465960", "measures": { @@ -100873,6 +101188,41 @@ ] } }, + { + "name": "pal/game/00465B00", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "132", + "matched_code": "132", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "132", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00465B00", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4610816" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00465B00.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00465B88", "measures": { @@ -102238,6 +102588,41 @@ ] } }, + { + "name": "pal/game/0048AE78", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "112", + "matched_code": "112", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "112", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0048AE78", + "size": "112", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4763256" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0048AE78.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0048B4B0", "measures": { @@ -102623,6 +103008,41 @@ ] } }, + { + "name": "pal/game/004976D0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "160", + "matched_code": "160", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "160", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004976D0", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4814544" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004976D0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004977A0", "measures": { @@ -103603,6 +104023,41 @@ ] } }, + { + "name": "pal/game/004A8F40", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "164", + "matched_code": "164", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "164", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004A8F40", + "size": "164", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4886336" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004A8F40.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004A9118", "measures": { @@ -103883,6 +104338,41 @@ ] } }, + { + "name": "pal/game/004AE890", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "132", + "matched_code": "132", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "132", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004AE890", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4909200" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004AE890.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004AF020", "measures": { @@ -103953,6 +104443,41 @@ ] } }, + { + "name": "pal/game/004B0BB0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "148", + "matched_code": "148", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "148", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B0BB0", + "size": "148", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4918192" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B0BB0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B1800", "measures": { @@ -104058,6 +104583,41 @@ ] } }, + { + "name": "pal/game/004B3050", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "160", + "matched_code": "160", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "160", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B3050", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4927568" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B3050.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B4CE8", "measures": { @@ -104093,6 +104653,76 @@ ] } }, + { + "name": "pal/game/004B5988", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "232", + "matched_code": "232", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "232", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B5988", + "size": "232", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4938120" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B5988.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004B5F70", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "180", + "matched_code": "180", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "180", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B5F70", + "size": "180", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4939632" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B5F70.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B7630", "measures": { @@ -104198,6 +104828,41 @@ ] } }, + { + "name": "pal/game/004B85B0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "140", + "matched_code": "140", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "140", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B85B0", + "size": "140", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4949424" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B85B0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B8F28", "measures": { @@ -104758,6 +105423,41 @@ ] } }, + { + "name": "pal/game/004C8108", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "196", + "matched_code": "196", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "196", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004C8108", + "size": "196", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5013768" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C8108.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004C8610", "measures": { @@ -105003,6 +105703,41 @@ ] } }, + { + "name": "pal/game/004CCFE8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004CCFE8", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5033960" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CCFE8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004CD818", "measures": { @@ -105038,6 +105773,41 @@ ] } }, + { + "name": "pal/game/004CD9B8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "204", + "matched_code": "204", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "204", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004CD9B8", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5036472" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CD9B8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004CDE78", "measures": { @@ -105283,6 +106053,41 @@ ] } }, + { + "name": "pal/game/004D0618", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "232", + "matched_code": "232", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "232", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D0618", + "size": "232", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5047832" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D0618.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004D0700", "measures": { @@ -105458,6 +106263,41 @@ ] } }, + { + "name": "pal/game/004D6468", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "184", + "matched_code": "184", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "184", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D6468", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5071976" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D6468.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004D67E8", "measures": { @@ -105528,6 +106368,41 @@ ] } }, + { + "name": "pal/game/004D6EE8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D6EE8", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5074664" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D6EE8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004D7208", "measures": { @@ -105878,6 +106753,76 @@ ] } }, + { + "name": "pal/game/004E3D58", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "156", + "matched_code": "156", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "156", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E3D58", + "size": "156", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5127512" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E3D58.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004E5B78", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "132", + "matched_code": "132", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "132", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E5B78", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5135224" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E5B78.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004E64E8", "measures": { @@ -105913,6 +106858,41 @@ ] } }, + { + "name": "pal/game/004E88B8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "216", + "matched_code": "216", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "216", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E88B8", + "size": "216", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5146808" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E88B8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004EB588", "measures": { @@ -106123,6 +107103,41 @@ ] } }, + { + "name": "pal/game/004F08E0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "208", + "matched_code": "208", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "208", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F08E0", + "size": "208", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5179616" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F08E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004F16B8", "measures": { @@ -106788,6 +107803,41 @@ ] } }, + { + "name": "pal/game/00501BC8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00501BC8", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5249992" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00501BC8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00501C90", "measures": { @@ -106998,6 +108048,41 @@ ] } }, + { + "name": "pal/game/00504E10", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "160", + "matched_code": "160", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "160", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00504E10", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5262864" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00504E10.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00504F10", "measures": { @@ -107033,6 +108118,356 @@ ] } }, + { + "name": "pal/game/005055E8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "244", + "matched_code": "244", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "244", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_005055E8", + "size": "244", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5264872" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005055E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00505B40", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "228", + "matched_code": "228", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "228", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00505B40", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5266240" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00505B40.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00505D18", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "228", + "matched_code": "228", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "228", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00505D18", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5266712" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00505D18.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/005060D8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "212", + "matched_code": "212", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "212", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_005060D8", + "size": "212", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5267672" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005060D8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00506590", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "228", + "matched_code": "228", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "228", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00506590", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5268880" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00506590.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00506A70", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "228", + "matched_code": "228", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "228", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00506A70", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5270128" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00506A70.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00506C08", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "140", + "matched_code": "140", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "140", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00506C08", + "size": "140", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5270536" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00506C08.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00506F68", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00506F68", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5271400" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00506F68.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/005071B8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "184", + "matched_code": "184", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "184", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_005071B8", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5271992" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005071B8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00507758", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00507758", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5273432" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00507758.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00508A38", "measures": { @@ -107698,6 +109133,111 @@ ] } }, + { + "name": "pal/game/00509738", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00509738", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5281592" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00509738.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00509850", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00509850", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5281872" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00509850.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00509960", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00509960", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5282144" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00509960.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00509B98", "measures": { @@ -107733,6 +109273,76 @@ ] } }, + { + "name": "pal/game/0050A660", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0050A660", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5285472" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0050A660.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/0050B5F8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0050B5F8", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5289464" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0050B5F8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0050BEC8", "measures": { @@ -107768,6 +109378,41 @@ ] } }, + { + "name": "pal/game/0050C980", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "192", + "matched_code": "192", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "192", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0050C980", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5294464" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0050C980.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0050DEB8", "measures": { @@ -108153,6 +109798,41 @@ ] } }, + { + "name": "pal/game/005125F8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "200", + "matched_code": "200", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "200", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_005125F8", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5318136" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005125F8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00513DE0", "measures": { @@ -108468,6 +110148,41 @@ ] } }, + { + "name": "pal/game/00526848", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "144", + "matched_code": "144", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "144", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00526848", + "size": "144", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5400648" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00526848.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/005275D8", "measures": { @@ -108608,6 +110323,41 @@ ] } }, + { + "name": "pal/game/0053E0A0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "184", + "matched_code": "184", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "184", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0053E0A0", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5496992" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0053E0A0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0053F4D8", "measures": { @@ -108888,6 +110638,41 @@ ] } }, + { + "name": "pal/game/0054B968", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "160", + "matched_code": "160", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "160", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0054B968", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5552488" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054B968.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0054C0A8", "measures": { @@ -108958,6 +110743,41 @@ ] } }, + { + "name": "pal/game/0054E148", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "124", + "matched_code": "124", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "124", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0054E148", + "size": "124", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5562696" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054E148.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0054EB10", "measures": { @@ -114052,10 +115872,10 @@ "name": "main/.text/0043xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "63272", + "total_code": "62972", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 136, + "total_functions": 134, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -114397,15 +116217,6 @@ "virtual_address": "4405128" } }, - { - "name": "func_004337F0", - "size": "168", - "fuzzy_match_percent": 0.0, - "address": "14104", - "metadata": { - "virtual_address": "4405232" - } - }, { "name": "func_00433898", "size": "368", @@ -114847,15 +116658,6 @@ "virtual_address": "4432856" } }, - { - "name": "func_0043A5B0", - "size": "132", - "fuzzy_match_percent": 0.0, - "address": "42200", - "metadata": { - "virtual_address": "4433328" - } - }, { "name": "func_0043A638", "size": "36", @@ -115302,10 +117104,10 @@ "name": "main/.text/0044xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "63300", + "total_code": "62852", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 114, + "total_functions": 111, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -116097,15 +117899,6 @@ "virtual_address": "4511832" } }, - { - "name": "func_0044D8E0", - "size": "128", - "fuzzy_match_percent": 0.0, - "address": "55168", - "metadata": { - "virtual_address": "4511968" - } - }, { "name": "func_0044D960", "size": "636", @@ -116160,15 +117953,6 @@ "virtual_address": "4513752" } }, - { - "name": "func_0044DFE0", - "size": "172", - "fuzzy_match_percent": 0.0, - "address": "56960", - "metadata": { - "virtual_address": "4513760" - } - }, { "name": "func_0044E090", "size": "196", @@ -116178,15 +117962,6 @@ "virtual_address": "4513936" } }, - { - "name": "func_0044E158", - "size": "148", - "fuzzy_match_percent": 0.0, - "address": "57336", - "metadata": { - "virtual_address": "4514136" - } - }, { "name": "func_0044E1F0", "size": "12", @@ -116354,10 +118129,10 @@ "name": "main/.text/0045xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "61840", + "total_code": "61240", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 157, + "total_functions": 154, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -117068,15 +118843,6 @@ "virtual_address": "4553968" } }, - { - "name": "func_00457DA8", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "31928", - "metadata": { - "virtual_address": "4554152" - } - }, { "name": "func_00457E60", "size": "52", @@ -117374,15 +119140,6 @@ "virtual_address": "4574944" } }, - { - "name": "func_0045D188", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "53400", - "metadata": { - "virtual_address": "4575624" - } - }, { "name": "func_0045D258", "size": "192", @@ -117473,15 +119230,6 @@ "virtual_address": "4579264" } }, - { - "name": "func_0045DFC8", - "size": "216", - "fuzzy_match_percent": 0.0, - "address": "57048", - "metadata": { - "virtual_address": "4579272" - } - }, { "name": "func_0045E0A0", "size": "196", @@ -117793,10 +119541,10 @@ "name": "main/.text/0046xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "57160", + "total_code": "56864", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 192, + "total_functions": 190, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -118318,15 +120066,6 @@ "virtual_address": "4609616" } }, - { - "name": "func_004656C8", - "size": "164", - "fuzzy_match_percent": 0.0, - "address": "21656", - "metadata": { - "virtual_address": "4609736" - } - }, { "name": "func_004657E0", "size": "140", @@ -118345,15 +120084,6 @@ "virtual_address": "4610496" } }, - { - "name": "func_00465B00", - "size": "132", - "fuzzy_match_percent": 0.0, - "address": "22736", - "metadata": { - "virtual_address": "4610816" - } - }, { "name": "func_00465BF0", "size": "164", @@ -121183,11 +122913,11 @@ { "name": "main/.text/0048xxxx", "measures": { - "fuzzy_match_percent": 0.261753, - "total_code": "61508", + "fuzzy_match_percent": 0.26223, + "total_code": "61396", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 115, + "total_functions": 114, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -121718,15 +123448,6 @@ "virtual_address": "4763056" } }, - { - "name": "func_0048AE78", - "size": "112", - "fuzzy_match_percent": 0.0, - "address": "44488", - "metadata": { - "virtual_address": "4763256" - } - }, { "name": "func_0048AF40", "size": "12", @@ -122244,11 +123965,11 @@ { "name": "main/.text/0049xxxx", "measures": { - "fuzzy_match_percent": 0.384405, - "total_code": "51248", + "fuzzy_match_percent": 0.385609, + "total_code": "51088", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 184, + "total_functions": 183, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -123040,15 +124761,6 @@ "virtual_address": "4814208" } }, - { - "name": "func_004976D0", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "29720", - "metadata": { - "virtual_address": "4814544" - } - }, { "name": "func_00497770", "size": "12", @@ -123927,10 +125639,10 @@ "name": "main/.text/004Axxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "52600", + "total_code": "52304", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 129, + "total_functions": 127, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -124533,15 +126245,6 @@ "virtual_address": "4886112" } }, - { - "name": "func_004A8F40", - "size": "164", - "fuzzy_match_percent": 0.0, - "address": "36632", - "metadata": { - "virtual_address": "4886336" - } - }, { "name": "func_004A8FE8", "size": "4", @@ -124956,15 +126659,6 @@ "virtual_address": "4908968" } }, - { - "name": "func_004AE890", - "size": "132", - "fuzzy_match_percent": 0.0, - "address": "59496", - "metadata": { - "virtual_address": "4909200" - } - }, { "name": "func_004AE918", "size": "392", @@ -125113,11 +126807,11 @@ { "name": "main/.text/004Bxxxx", "measures": { - "fuzzy_match_percent": 1.621818, - "total_code": "49204", + "fuzzy_match_percent": 1.650669, + "total_code": "48344", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 138, + "total_functions": 133, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -125171,15 +126865,6 @@ "virtual_address": "4916672" } }, - { - "name": "func_004B0BB0", - "size": "148", - "fuzzy_match_percent": 0.0, - "address": "2952", - "metadata": { - "virtual_address": "4918192" - } - }, { "name": "func_004B0D40", "size": "132", @@ -125333,15 +127018,6 @@ "virtual_address": "4927464" } }, - { - "name": "func_004B3050", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "12328", - "metadata": { - "virtual_address": "4927568" - } - }, { "name": "func_004B31D8", "size": "524", @@ -125486,15 +127162,6 @@ "virtual_address": "4936208" } }, - { - "name": "func_004B5988", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "22880", - "metadata": { - "virtual_address": "4938120" - } - }, { "name": "func_004B5A70", "size": "228", @@ -125531,15 +127198,6 @@ "virtual_address": "4939312" } }, - { - "name": "func_004B5F70", - "size": "180", - "fuzzy_match_percent": 0.0, - "address": "24392", - "metadata": { - "virtual_address": "4939632" - } - }, { "name": "func_004B6028", "size": "276", @@ -125738,15 +127396,6 @@ "virtual_address": "4947016" } }, - { - "name": "func_004B85B0", - "size": "140", - "fuzzy_match_percent": 0.0, - "address": "34184", - "metadata": { - "virtual_address": "4949424" - } - }, { "name": "func_004B8640", "size": "156", @@ -126381,11 +128030,11 @@ { "name": "main/.text/004Cxxxx", "measures": { - "fuzzy_match_percent": 0.333493, - "total_code": "52476", + "fuzzy_match_percent": 0.337299, + "total_code": "51884", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 135, + "total_functions": 132, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -126988,15 +128637,6 @@ "virtual_address": "5013608" } }, - { - "name": "func_004C8108", - "size": "196", - "fuzzy_match_percent": 0.0, - "address": "32976", - "metadata": { - "virtual_address": "5013768" - } - }, { "name": "func_004C8210", "size": "248", @@ -127348,15 +128988,6 @@ "virtual_address": "5033552" } }, - { - "name": "func_004CCFE8", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "53168", - "metadata": { - "virtual_address": "5033960" - } - }, { "name": "func_004CD188", "size": "308", @@ -127402,15 +129033,6 @@ "virtual_address": "5036192" } }, - { - "name": "func_004CD9B8", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "55680", - "metadata": { - "virtual_address": "5036472" - } - }, { "name": "func_004CDA88", "size": "232", @@ -127622,11 +129244,11 @@ { "name": "main/.text/004Dxxxx", "measures": { - "fuzzy_match_percent": 0.966038, - "total_code": "45548", + "fuzzy_match_percent": 0.979282, + "total_code": "44932", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 148, + "total_functions": 145, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -127653,15 +129275,6 @@ "virtual_address": "5046976" } }, - { - "name": "func_004D0618", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "1400", - "metadata": { - "virtual_address": "5047832" - } - }, { "name": "func_004D07F0", "size": "240", @@ -128148,15 +129761,6 @@ "virtual_address": "5071336" } }, - { - "name": "func_004D6468", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "25544", - "metadata": { - "virtual_address": "5071976" - } - }, { "name": "func_004D6590", "size": "320", @@ -128202,15 +129806,6 @@ "virtual_address": "5073720" } }, - { - "name": "func_004D6EE8", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "28232", - "metadata": { - "virtual_address": "5074664" - } - }, { "name": "func_004D7118", "size": "240", @@ -128980,11 +130575,11 @@ { "name": "main/.text/004Exxxx", "measures": { - "fuzzy_match_percent": 0.097587, - "total_code": "59436", + "fuzzy_match_percent": 0.098422, + "total_code": "58932", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 145, + "total_functions": 142, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -129326,15 +130921,6 @@ "virtual_address": "5127240" } }, - { - "name": "func_004E3D58", - "size": "156", - "fuzzy_match_percent": 0.0, - "address": "15616", - "metadata": { - "virtual_address": "5127512" - } - }, { "name": "func_004E3DF8", "size": "332", @@ -129434,15 +131020,6 @@ "virtual_address": "5134960" } }, - { - "name": "func_004E5B78", - "size": "132", - "fuzzy_match_percent": 0.0, - "address": "23328", - "metadata": { - "virtual_address": "5135224" - } - }, { "name": "func_004E5C60", "size": "184", @@ -129641,15 +131218,6 @@ "virtual_address": "5146784" } }, - { - "name": "func_004E88B8", - "size": "216", - "fuzzy_match_percent": 0.0, - "address": "34912", - "metadata": { - "virtual_address": "5146808" - } - }, { "name": "func_004E8990", "size": "4", @@ -130311,11 +131879,11 @@ { "name": "main/.text/004Fxxxx", "measures": { - "fuzzy_match_percent": 0.407384, - "total_code": "54740", + "fuzzy_match_percent": 0.408938, + "total_code": "54532", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 165, + "total_functions": 164, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -130360,15 +131928,6 @@ "virtual_address": "5179376" } }, - { - "name": "func_004F08E0", - "size": "208", - "fuzzy_match_percent": 0.0, - "address": "2048", - "metadata": { - "virtual_address": "5179616" - } - }, { "name": "func_004F0A70", "size": "88", @@ -131822,11 +133381,11 @@ { "name": "main/.text/0050xxxx", "measures": { - "fuzzy_match_percent": 0.832604, - "total_code": "41916", + "fuzzy_match_percent": 0.910927, + "total_code": "38312", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 183, + "total_functions": 165, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -131997,15 +133556,6 @@ "virtual_address": "5249680" } }, - { - "name": "func_00501BC8", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "6856", - "metadata": { - "virtual_address": "5249992" - } - }, { "name": "func_00501D10", "size": "4", @@ -132357,15 +133907,6 @@ "virtual_address": "5262856" } }, - { - "name": "func_00504E10", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "19728", - "metadata": { - "virtual_address": "5262864" - } - }, { "name": "func_00504EB0", "size": "96", @@ -132447,15 +133988,6 @@ "virtual_address": "5264704" } }, - { - "name": "func_005055E8", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "21736", - "metadata": { - "virtual_address": "5264872" - } - }, { "name": "func_005056E0", "size": "244", @@ -132528,15 +134060,6 @@ "virtual_address": "5266232" } }, - { - "name": "func_00505B40", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "23104", - "metadata": { - "virtual_address": "5266240" - } - }, { "name": "func_00505C28", "size": "228", @@ -132555,15 +134078,6 @@ "virtual_address": "5266704" } }, - { - "name": "func_00505D18", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "23576", - "metadata": { - "virtual_address": "5266712" - } - }, { "name": "func_00505E00", "size": "244", @@ -132609,15 +134123,6 @@ "virtual_address": "5267456" } }, - { - "name": "func_005060D8", - "size": "212", - "fuzzy_match_percent": 0.0, - "address": "24536", - "metadata": { - "virtual_address": "5267672" - } - }, { "name": "func_005061B0", "size": "276", @@ -132672,15 +134177,6 @@ "virtual_address": "5268648" } }, - { - "name": "func_00506590", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "25744", - "metadata": { - "virtual_address": "5268880" - } - }, { "name": "func_00506678", "size": "228", @@ -132726,15 +134222,6 @@ "virtual_address": "5269880" } }, - { - "name": "func_00506A70", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "26992", - "metadata": { - "virtual_address": "5270128" - } - }, { "name": "func_00506B58", "size": "20", @@ -132753,15 +134240,6 @@ "virtual_address": "5270528" } }, - { - "name": "func_00506C08", - "size": "140", - "fuzzy_match_percent": 0.0, - "address": "27400", - "metadata": { - "virtual_address": "5270536" - } - }, { "name": "func_00506C98", "size": "4", @@ -132816,15 +134294,6 @@ "virtual_address": "5271384" } }, - { - "name": "func_00506F68", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "28264", - "metadata": { - "virtual_address": "5271400" - } - }, { "name": "func_00507030", "size": "200", @@ -132843,15 +134312,6 @@ "virtual_address": "5271800" } }, - { - "name": "func_005071B8", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "28856", - "metadata": { - "virtual_address": "5271992" - } - }, { "name": "func_00507270", "size": "384", @@ -132915,15 +134375,6 @@ "virtual_address": "5273232" } }, - { - "name": "func_00507758", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "30296", - "metadata": { - "virtual_address": "5273432" - } - }, { "name": "func_00507820", "size": "4", @@ -132996,33 +134447,6 @@ "virtual_address": "5280328" } }, - { - "name": "func_00509738", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "38456", - "metadata": { - "virtual_address": "5281592" - } - }, - { - "name": "func_00509850", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "38736", - "metadata": { - "virtual_address": "5281872" - } - }, - { - "name": "func_00509960", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "39008", - "metadata": { - "virtual_address": "5282144" - } - }, { "name": "func_00509D98", "size": "192", @@ -133077,15 +134501,6 @@ "virtual_address": "5284816" } }, - { - "name": "func_0050A660", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "42336", - "metadata": { - "virtual_address": "5285472" - } - }, { "name": "func_0050AAC8", "size": "232", @@ -133122,15 +134537,6 @@ "virtual_address": "5289096" } }, - { - "name": "func_0050B5F8", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "46328", - "metadata": { - "virtual_address": "5289464" - } - }, { "name": "func_0050BB78", "size": "232", @@ -133158,15 +134564,6 @@ "virtual_address": "5293912" } }, - { - "name": "func_0050C980", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "51328", - "metadata": { - "virtual_address": "5294464" - } - }, { "name": "func_0050CAE8", "size": "192", @@ -133496,10 +134893,10 @@ "name": "main/.text/0051xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "62524", + "total_code": "62324", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 126, + "total_functions": 125, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -133823,15 +135220,6 @@ "virtual_address": "5317928" } }, - { - "name": "func_005125F8", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "9640", - "metadata": { - "virtual_address": "5318136" - } - }, { "name": "func_005126C0", "size": "28", @@ -134655,11 +136043,11 @@ { "name": "main/.text/0052xxxx", "measures": { - "fuzzy_match_percent": 0.171566, - "total_code": "64700", + "fuzzy_match_percent": 0.171949, + "total_code": "64556", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 91, + "total_functions": 90, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -135172,15 +136560,6 @@ "virtual_address": "5399624" } }, - { - "name": "func_00526848", - "size": "144", - "fuzzy_match_percent": 0.0, - "address": "26328", - "metadata": { - "virtual_address": "5400648" - } - }, { "name": "func_005268D8", "size": "552", @@ -135501,10 +136880,10 @@ "name": "main/.text/0053xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "63696", + "total_code": "63512", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 29, + "total_functions": 28, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -135666,15 +137045,6 @@ "virtual_address": "5496976" } }, - { - "name": "func_0053E0A0", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "55872", - "metadata": { - "virtual_address": "5496992" - } - }, { "name": "func_0053E158", "size": "436", @@ -135787,11 +137157,11 @@ { "name": "main/.text/0054xxxx", "measures": { - "fuzzy_match_percent": 0.375615, - "total_code": "53780", + "fuzzy_match_percent": 0.37761, + "total_code": "53496", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 131, + "total_functions": 129, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -136664,15 +138034,6 @@ "virtual_address": "5552344" } }, - { - "name": "func_0054B968", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "46544", - "metadata": { - "virtual_address": "5552488" - } - }, { "name": "func_0054BA08", "size": "224", @@ -136916,15 +138277,6 @@ "virtual_address": "5561896" } }, - { - "name": "func_0054E148", - "size": "124", - "fuzzy_match_percent": 0.0, - "address": "56752", - "metadata": { - "virtual_address": "5562696" - } - }, { "name": "func_0054E1C8", "size": "544", diff --git a/src/pal/game/004337F0.c b/src/pal/game/004337F0.c new file mode 100644 index 000000000..5aa29d92e --- /dev/null +++ b/src/pal/game/004337F0.c @@ -0,0 +1,12 @@ +#include "common.h" +extern s32 D_0021EE54; +typedef struct { + char pad[0x18]; + f32 a, b; +} Object; +s32 func_004337F0(Object *p) +{ + if (D_0021EE54 == 1) + return p->a >= 2.2f && p->b >= 1.2f; + return p->a >= 3.5f && p->b >= 1.6f; +} diff --git a/src/pal/game/0043A5B0.c b/src/pal/game/0043A5B0.c new file mode 100644 index 000000000..580296711 --- /dev/null +++ b/src/pal/game/0043A5B0.c @@ -0,0 +1,32 @@ +#include "common.h" + +extern void func_00163550(s32); +extern s32 func_001638B0(s32, void *, u32, s32, s32, s32, s32); +extern void func_0043A3D8(void *, u64 *, s32, s32); +extern u64 D_0021DB08; +extern char D_002481E0[]; +typedef struct Type1 { + char pad[0x64C]; + u32 f64C, f650; + s32 f654; +} Type1; +typedef struct Type2 { + char pad[0x14]; + s32 f14; + char pad18[0x34]; + s32 f4C; +} Type2; +extern Type1 D_001C20C0[]; +extern Type2 D_001DFD70[]; + +/* Transfer the image and retain the packed result of its descriptor conversion. */ +void func_0043A5B0(void) +{ + u64 output[3]; + void *buffer = D_002481E0; + func_00163550(1); + func_001638B0(0, buffer, D_001C20C0[0].f650 + D_001C20C0[0].f64C, + D_001C20C0[0].f654, 0, 0, 0); + func_0043A3D8(buffer, output, D_001DFD70[0].f4C, D_001DFD70[0].f14); + D_0021DB08 = output[0]; +} diff --git a/src/pal/game/0044D8E0.c b/src/pal/game/0044D8E0.c new file mode 100644 index 000000000..22248589d --- /dev/null +++ b/src/pal/game/0044D8E0.c @@ -0,0 +1,21 @@ +#include "common.h" + +/* Appends the command fields when the object state differs from the current value. */ +typedef struct { + u8 enabled; + char pad[0x37]; + u64 value; +} Object; +extern u64 D_003D7720[]; +extern u32 *D_00221F20; +extern char D_003D7790[]; +void func_0044D8E0(Object *p) +{ + if (!p->enabled || p->value != D_003D7720[0]) { + D_00221F20[0] = 0x30000002; + D_00221F20[1] = (u32)D_003D7790; + D_00221F20[2] = 0; + D_00221F20[3] = 0x50000002; + D_00221F20 += 4; + } +} diff --git a/src/pal/game/0044DFE0.c b/src/pal/game/0044DFE0.c new file mode 100644 index 000000000..402410b62 --- /dev/null +++ b/src/pal/game/0044DFE0.c @@ -0,0 +1,19 @@ +#include "common.h" +typedef struct { + s32 a, b, c; +} Data; +extern char D_00239640[]; +extern s32 D_002213F8; +extern void func_0044B3D0(void); +extern void func_0044D860(void *); +extern void func_0044D4B0(s32, u64, u64, u64, s32, s32); +void func_0044DFE0(Data *p, s32 a, s32 b, s32 c) +{ + if (!*(u8 *)D_00239640) + func_0044B3D0(); + else if (D_002213F8 != 8) { + func_0044B3D0(); + func_0044D860(D_00239640); + } + func_0044D4B0(a, p->a, p->b, p->c, b, c); +} diff --git a/src/pal/game/0044E158.c b/src/pal/game/0044E158.c new file mode 100644 index 000000000..2a1bd47f2 --- /dev/null +++ b/src/pal/game/0044E158.c @@ -0,0 +1,17 @@ +#include "common.h" +typedef struct { + int a, b, c; +} Args; +extern unsigned char D_00239640[]; +extern int D_002213F8; +extern void func_0044B3D0(void), func_0044D860(void *), func_0044D4B0(s32, u64, u64, u64, s32, s32); +void func_0044E158(Args *p, int flags) +{ + if (!D_00239640[0]) + func_0044B3D0(); + else if (D_002213F8 != 8) { + func_0044B3D0(); + func_0044D860(D_00239640); + } + func_0044D4B0(4, p->a, p->b, p->c, flags, 1); +} diff --git a/src/pal/game/00457DA8.c b/src/pal/game/00457DA8.c new file mode 100644 index 000000000..66b904e5f --- /dev/null +++ b/src/pal/game/00457DA8.c @@ -0,0 +1,11 @@ +#include "common.h" +extern s32 D_0021DF4C; +extern void func_00454B68(s32); +extern void func_00455288(f32, f32, f32, f32, s32, void *, s32, s32, s32, u64, f32, f32); +void func_00457DA8(s32 x, s32 y, s32 a, void *b, s32 c) +{ + s32 old = D_0021DF4C; + func_00454B68(0); + func_00455288((f32)x, (f32)y, 1.0f, 1.0f, a, b, c, 0, 0, 0x80000000UL, 0.0f, 0.0f); + func_00454B68(old); +} diff --git a/src/pal/game/0045D188.c b/src/pal/game/0045D188.c new file mode 100644 index 000000000..ffafa2247 --- /dev/null +++ b/src/pal/game/0045D188.c @@ -0,0 +1,23 @@ +#include "common.h" +extern int D_0021DE3C; +extern int func_0045CFA8(char *, int *, int *), func_0047FEB0(s32, s32, s32, s32, u8 *); +extern void func_0045D0C0(char *); +int func_0045D188(char *p) +{ + if (*(int *)(p + 0x60)) { + int a = 0, b = 0, status = 0, mode; + *(unsigned char *)(p + 0x64) = 0; + *(unsigned char *)(p + 0x6C) = 1; + func_0045CFA8(p, &a, &b); + mode = (((u32)D_0021DE3C - 1) <= 1) ? 2 : 1; + *(int *)(p + 0x68) = mode; + if (b == 0) + status = func_0047FEB0(1, mode, 0, a, 0); + else if (b == 1) + status = func_0047FEB0(2, mode, a, 0, 0); + if (status < 0) + func_0045D0C0(p); + return status == 0; + } + return 0; +} diff --git a/src/pal/game/0045DFC8.c b/src/pal/game/0045DFC8.c new file mode 100644 index 000000000..c5b2715ca --- /dev/null +++ b/src/pal/game/0045DFC8.c @@ -0,0 +1,18 @@ +#include "common.h" + +extern s32 func_0045E0A0(s16); +extern void func_0045EBE8(s16, s16, s16, s32, f32, f32, f32, f32); +extern s16 D_0023F3AC[]; + +/* Queue an effect if its id is inactive and a free slot remains. */ +s32 func_0045DFC8(s16 id, s16 a, s16 b, s32 c, f32 x, f32 y, f32 z, f32 w) +{ + if (!func_0045E0A0(id)) { + if (id != -1 && D_0023F3AC[0] < 16) { + func_0045EBE8(id, a, b, c, x, y, z, w); + return 1; + } + return 0; + } + return 0; +} diff --git a/src/pal/game/004656C8.c b/src/pal/game/004656C8.c new file mode 100644 index 000000000..55a35c676 --- /dev/null +++ b/src/pal/game/004656C8.c @@ -0,0 +1,23 @@ +#include "common.h" +typedef struct { + int f0, f4, mode, fC, f10, f14; +} State; +extern State D_001719C8[]; +extern void func_00466760(void), func_00465338(int); +void func_004656C8(void) +{ + func_00466760(); + if (D_001719C8[0].mode == 2) { + if (D_001719C8[0].f10 && !D_001719C8[0].f14) { + D_001719C8[0].f10 = 0; + func_00465338(7); + } + if (!D_001719C8[0].f14) + func_00465338(7); + else { + if (D_001719C8[0].mode == 2 && D_001719C8[0].f10) + D_001719C8[0].f10 = 0; + func_00465338(11); + } + } +} diff --git a/src/pal/game/00465B00.c b/src/pal/game/00465B00.c new file mode 100644 index 000000000..f0d400e89 --- /dev/null +++ b/src/pal/game/00465B00.c @@ -0,0 +1,17 @@ +#include "common.h" +extern int D_001719D0[], D_0021DB5C; +extern unsigned char D_0021EE98; +extern void func_00465338(int); +void func_00465B00(void) +{ + int a = D_001719D0[0]; + if (a != 2) + func_00465338(4); + else if (D_0021DB5C == a) { + if (D_0021EE98) + func_00465338(27); + else + func_00465338(14); + } else if (D_0021DB5C == 1) + func_00465338(16); +} diff --git a/src/pal/game/0048AE78.c b/src/pal/game/0048AE78.c new file mode 100644 index 000000000..bdbffe81d --- /dev/null +++ b/src/pal/game/0048AE78.c @@ -0,0 +1,18 @@ +#include "common.h" +typedef struct { + char pad[0x38]; + s32 x; + s32 y; +} Object; +extern Object *func_0048B428(u32); +s32 func_0048AE78(f32 a, f32 b, void *unused, u32 index) +{ + s32 result = 0; + Object *p = func_0048B428(index); + if (p) { + p->x = (s32)(a * 1024.0f); + p->y = (s32)(b * 1024.0f); + result = 1; + } + return result; +} diff --git a/src/pal/game/004976D0.c b/src/pal/game/004976D0.c new file mode 100644 index 000000000..3b0d8a90e --- /dev/null +++ b/src/pal/game/004976D0.c @@ -0,0 +1,26 @@ +#include "common.h" +typedef struct { + s32 pad; + void *table; +} Manager; +extern Manager D_00222138[]; +extern s32 D_0023F550[]; +extern s32 D_0021EE44; +u8 D_0021F5D4 = 0; +extern Manager *func_00502150(void); +extern s32 func_00502338(Manager *, s32); +extern void func_00502100(Manager *); +static inline Manager *manager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +void func_004976D0(s32 index) +{ + if (!D_0023F550[0] && D_0021EE44 != 3 && !D_0021F5D4) { + func_00502338(manager(), index); + func_00502100(manager()); + } +} diff --git a/src/pal/game/004A8F40.c b/src/pal/game/004A8F40.c new file mode 100644 index 000000000..3f76bb5e8 --- /dev/null +++ b/src/pal/game/004A8F40.c @@ -0,0 +1,15 @@ +#include "common.h" +extern s32 D_0020C710[][3]; +extern s32 D_00222110; +extern void func_00453F30(void *, const void *, s32); +extern s32 func_004FF9B8(s32 *, s32, s32, s32); +void func_004A8F40(s32 index, s32 count, s32 seed) +{ + s32 values[3]; + s32 *p = D_0020C710[index]; + s32 i; + func_00453F30(values, p, count * 4); + for (i = 0; i < count; i++) { + *p++ = values[func_004FF9B8(&D_00222110, i + seed, 0, count - 1)]; + } +} diff --git a/src/pal/game/004AE890.c b/src/pal/game/004AE890.c new file mode 100644 index 000000000..baa6dfaad --- /dev/null +++ b/src/pal/game/004AE890.c @@ -0,0 +1,17 @@ +#include "common.h" +typedef struct { + s32 pad; + f32 value; + char rest[0x48]; +} State; +extern State D_003092A0[]; +extern s32 D_00221790; +extern s32 func_00506BB8(void); +extern s32 func_005064A8(s32, f32); +extern s32 func_005052D0(s32, f32, f32); +void func_004AE890(void) +{ + State *p = &D_003092A0[func_00506BB8()]; + func_005064A8(D_00221790, p->value); + func_005052D0(D_00221790, (1.0f - p->value) * 0.3f + 0.5f, 0.5f); +} diff --git a/src/pal/game/004B0BB0.c b/src/pal/game/004B0BB0.c new file mode 100644 index 000000000..c3d02f1f3 --- /dev/null +++ b/src/pal/game/004B0BB0.c @@ -0,0 +1,26 @@ +#include "common.h" +typedef struct { + s32 mode; + s32 flags; + char rest[0x20]; +} State; +extern State D_003095F8[]; +extern s32 func_00506BB8(void); +extern void func_00502520(void *); +extern void func_004B0C48(void); +void func_004B0BB0(void *descriptor) +{ + State *p = &D_003095F8[func_00506BB8()]; + switch (p->mode) { + case 0: + break; + case 1: + p->mode = 0; + break; + case 2: + func_00502520(descriptor); + break; + } + if (p->flags & 1) + func_004B0C48(); +} diff --git a/src/pal/game/004B3050.c b/src/pal/game/004B3050.c new file mode 100644 index 000000000..8cdea8b8c --- /dev/null +++ b/src/pal/game/004B3050.c @@ -0,0 +1,25 @@ +#include "common.h" +typedef struct { + int f0; + unsigned int flags; + char pad[0x174]; +} State; +extern State D_003097A8[]; +extern void func_00453E20(void *, int, unsigned int); +extern void *func_004B2FF0(void); +extern int func_00506BB8(void), func_00506D28(void *), func_00506B70(int); +extern void func_00502508(void *); +void func_004B3050(int bit) +{ + State *p = D_003097A8; + if (!p->flags) { + int old; + func_00453E20(p, 0, 0x17C); + old = func_00506BB8(); + func_00506B70(4); + func_00502508(func_004B2FF0()); + func_00506D28(func_004B2FF0()); + func_00506B70(old); + } + p->flags |= 1u << bit; +} diff --git a/src/pal/game/004B5988.c b/src/pal/game/004B5988.c new file mode 100644 index 000000000..7d0532797 --- /dev/null +++ b/src/pal/game/004B5988.c @@ -0,0 +1,15 @@ +#include "common.h" + +extern s32 D_00221848; +extern s32 func_004A2798(s32 *, s32); +extern s32 func_005052D0(s32, f32, f32); + +/* Position the five resources used by this menu. */ +void func_004B5988(void) +{ + func_005052D0(func_004A2798(&D_00221848, 1), 0.5f, 0.7f); + func_005052D0(func_004A2798(&D_00221848, 7), -0.5f, 0.15f); + func_005052D0(func_004A2798(&D_00221848, 15), 1.35f, 0.5f); + func_005052D0(func_004A2798(&D_00221848, 46), -0.25f, 0.5f); + func_005052D0(func_004A2798(&D_00221848, 54), 1.25f, 0.5f); +} diff --git a/src/pal/game/004B5F70.c b/src/pal/game/004B5F70.c new file mode 100644 index 000000000..c95f7ff5d --- /dev/null +++ b/src/pal/game/004B5F70.c @@ -0,0 +1,28 @@ +#include "common.h" +typedef struct { + int f0, f4; + float current, target; + char pad[0x18]; + int timer; + unsigned char changed; +} State; +extern State D_00309940[]; +extern int func_00453CE8(int *); +extern f32 func_004760C0(f32 *, f32, f32, f32); +extern void func_004B6028(void); +void func_004B5F70(void) +{ + int changed = 0, refresh = 0; + if (D_00309940[0].target != D_00309940[0].current) { + if (D_00309940[0].timer) + func_00453CE8(&D_00309940[0].timer); + else + func_004760C0(&D_00309940[0].target, D_00309940[0].current, 0.1f, 0.005f); + refresh = 1; + changed = 1; + } else + D_00309940[0].timer = 30; + if (refresh) + func_004B6028(); + D_00309940[0].changed = changed; +} diff --git a/src/pal/game/004B85B0.c b/src/pal/game/004B85B0.c new file mode 100644 index 000000000..cd0df9895 --- /dev/null +++ b/src/pal/game/004B85B0.c @@ -0,0 +1,24 @@ +#include "common.h" + +/* Cycles the selected slot setting and refreshes its dependent labels. */ +typedef struct { + char pad[0x2F10]; + s32 slot; +} Player; +extern s32 D_00171250[]; +extern s32 func_00506BB8(void); +extern Player *func_00511CC0(s32); +extern void func_004985F0(s32); +extern void func_004B68A8(s32), func_004B6950(s32), func_004B6A10(s32), func_004B6AD0(s32), func_004B6B90(s32); +void func_004B85B0(void) +{ + s32 index = func_00506BB8(); + s32 *p = &D_00171250[func_00511CC0(index)->slot]; + *p = (*p + 1) % 3; + func_004985F0(16); + func_004B68A8(index); + func_004B6950(index); + func_004B6A10(index); + func_004B6AD0(index); + func_004B6B90(index); +} diff --git a/src/pal/game/004C8108.c b/src/pal/game/004C8108.c new file mode 100644 index 000000000..0afcbb3f4 --- /dev/null +++ b/src/pal/game/004C8108.c @@ -0,0 +1,20 @@ +#include "common.h" +extern int D_0021F218, D_0021EE54, D_0021EE58, D_0021DE98; +extern int D_00241C00[]; +extern void func_004985F0(int), func_004C81D0(int), func_0049BF40(int); +extern const char *func_0045E850(int); +extern int func_00506BB8(void); +extern void func_0049F4C8(int, const char *, void (*)(int), int, int, int, int, float); +void func_004C8108(void) +{ + if (D_0021F218 != -1) { + int state = 1; + if (!D_0021EE54 && D_0021EE58 == 1) + state = 21; + if (D_0021DE98 == state && D_0021F218 < 8 && D_00241C00[0] == 1) { + func_004985F0(7); + func_0049F4C8(4, func_0045E850(0x362E), func_004C81D0, 3, 0, 0, 0, -1.0f); + } else + func_0049BF40(func_00506BB8()); + } +} diff --git a/src/pal/game/004CCFE8.c b/src/pal/game/004CCFE8.c new file mode 100644 index 000000000..d2449b9bd --- /dev/null +++ b/src/pal/game/004CCFE8.c @@ -0,0 +1,23 @@ +#include "common.h" + +extern s32 D_0021EE54, D_0021EE58; +extern s32 D_00221A20; +extern s32 D_003D27D8[], D_003D27A8[]; +extern s32 func_004A2798(s32 *, s32); +extern void func_004CE4C0(s32); +extern s32 func_00506BB8(void); +extern void func_0049CE90(s32, s32, s32, s32); +extern s32 func_005063C0(s32, u32); + +/* Set the selection's alpha and resource color for the current slot. */ +void func_004CCFE8(s32 selection) +{ + s32 active = 1; + s32 index; + if (D_0021EE54 || D_0021EE58 != 1) + active = selection >= 8; + func_004CE4C0(active); + index = func_00506BB8(); + func_0049CE90(index, 0, func_004A2798(&D_00221A20, D_003D27D8[selection]), 0); + func_005063C0(func_004A2798(&D_00221A20, D_003D27A8[selection]), 0x80D0D0D0u); +} diff --git a/src/pal/game/004CD9B8.c b/src/pal/game/004CD9B8.c new file mode 100644 index 000000000..f741b1d08 --- /dev/null +++ b/src/pal/game/004CD9B8.c @@ -0,0 +1,31 @@ +#include "common.h" + +extern s32 func_00506BB8(void); +extern char *func_00511CC0(s32); +extern const char *func_0045E850(s32); +extern s32 func_005492C0(void *, s32); + +/* Select the label associated with the current inventory state. */ +const char *func_004CD9B8(void) +{ + char *p = func_00511CC0(func_00506BB8()); + const char *result = func_0045E850(-1); + switch (func_005492C0(*(void **)(p + 0x26E4), 1)) { + case 0: + result = func_0045E850(0x33B1); + break; + case 1: + result = func_0045E850(0x33B2); + break; + case 2: + result = func_0045E850(0x33B3); + break; + case 3: + result = func_0045E850(0x33B4); + break; + default: + result = func_0045E850(0x33B5); + break; + } + return result; +} diff --git a/src/pal/game/004D0618.c b/src/pal/game/004D0618.c new file mode 100644 index 000000000..1a6b35287 --- /dev/null +++ b/src/pal/game/004D0618.c @@ -0,0 +1,36 @@ +#include "common.h" + +extern s32 func_00506BB8(void); +extern void func_00502520(void *); +extern void func_004D0B60(void); +extern void func_004D07B0(void), func_004D07F0(void), func_004D08E0(void); +extern s32 func_004A2468(void *); +typedef struct Type1 { + s32 f0, f4, f8; + char pad[0x9D4]; +} Type1; +extern Type1 D_00316D00[]; + +/* Process pending state changes and refresh the current slot's menu. */ +void func_004D0618(void *descriptor) +{ + Type1 *p = D_00316D00 + func_00506BB8(); + switch (p->f0) { + case 1: + p->f0 = 0; + break; + case 2: + func_00502520(descriptor); + break; + case 0: + func_004D0B60(); + break; + } + if (p->f8 & 1) + func_004D07B0(); + if (p->f8 & 2) + func_004D07F0(); + func_004A2468((char *)p + 0x974); + if (p->f8 & 4) + func_004D08E0(); +} diff --git a/src/pal/game/004D6468.c b/src/pal/game/004D6468.c new file mode 100644 index 000000000..572df78c9 --- /dev/null +++ b/src/pal/game/004D6468.c @@ -0,0 +1,28 @@ +#include "common.h" +extern char D_0031B9B8[]; +extern s32 func_004E3138(s32, s32, void *); +extern void func_004E17B8(void); +extern s32 D_00171BC0[]; +extern s32 func_00476138(f32, s32 *, s32, s32); +extern void func_00498618(void *, s32, s32); +extern void func_004E2938(s32, void *); +extern void func_004985F0(s32); +void func_004D6468(void) +{ + char *p = D_0031B9B8; + if (*(u8 *)(p + 0x13B1)) { + *(u8 *)(p + 0x13B1) = 0; + *(s32 *)(p + 0x13AC) = func_004E3138(30, 4, 0); + func_004E17B8(); + } + if (func_00476138(0.1f, (s32 *)(p + 0x1388), D_00171BC0[0], 1)) { + func_00498618(p + 0x1378, *(s32 *)(p + 0x1388), 0); + } else { + func_004E2938(30, 0); + if (*(u8 *)(p + 0x13B0)) { + func_004985F0(32); + *(u8 *)(p + 0x13B0) = 0; + } + *(s32 *)(p + 4) &= ~4; + } +} diff --git a/src/pal/game/004D6EE8.c b/src/pal/game/004D6EE8.c new file mode 100644 index 000000000..65ba7d4b8 --- /dev/null +++ b/src/pal/game/004D6EE8.c @@ -0,0 +1,25 @@ +#include "common.h" +extern char D_0031D100[]; +extern int func_00506BB8(void); +extern void func_00502520(void *), func_004D6FB0(void), func_004D7408(void), func_004D7208(void); +extern int func_004A2468(void *); +void func_004D6EE8(void *descriptor) +{ + char *p = D_0031D100 + func_00506BB8() * 0x528; + switch (*(int *)p) { + case 0: + *(int *)p = 2; + break; + case 1: + func_00502520(descriptor); + break; + case 2: + func_004D6FB0(); + break; + } + if (*(int *)(p + 4) & 1) + func_004D7408(); + func_004A2468(p + 0x4BC); + if (*(int *)(p + 4) & 2) + func_004D7208(); +} diff --git a/src/pal/game/004E3D58.c b/src/pal/game/004E3D58.c new file mode 100644 index 000000000..d2b0735e4 --- /dev/null +++ b/src/pal/game/004E3D58.c @@ -0,0 +1,40 @@ +#include "common.h" + +/* Applies indexed flag changes to each entry in the sentinel-terminated group table. */ +typedef struct { + u32 flags; + char pad[0x1F]; + u8 index; + char pad24[0xC]; + u32 other; + char tail[0x1C]; +} Entry; +typedef struct { + Entry *entries; + s32 count; +} Group; +typedef struct { + s16 flags, other; +} Change; +extern Group D_00324080[]; +extern Change D_00323D80[]; +void func_004E3D58(void) +{ + Group *g = D_00324080; + while (g->entries) { + Entry *p = g->entries; + if (g->count > 0) { + s32 count = g->count; + do { + Change *c = &D_00323D80[p->index]; + if (c->flags) + p->flags = (p->flags & 0xFFFFC000) | c->flags; + if (c->other) + p->other = (p->other & 0xFFFFC000) | c->other; + p++; + count--; + } while (count != 0); + } + g++; + } +} diff --git a/src/pal/game/004E5B78.c b/src/pal/game/004E5B78.c new file mode 100644 index 000000000..47a51acf0 --- /dev/null +++ b/src/pal/game/004E5B78.c @@ -0,0 +1,26 @@ +/* cflags: -mno-split-addresses */ +#include "common.h" + +typedef void (*Type1)(void *, f32); +extern s32 func_0048AA58(void *, s32, s32, Type1, void *); +extern void func_00439AA0(s32); +extern void func_004E3300(void); +extern void func_00489E20(void); +extern void func_004E17B8(void); +extern s32 func_00157FA8(void); +extern s32 func_00138D70(s32); +extern char D_002215D0[]; + +/* Flush active work and optionally wait for the transfer engine to finish. */ +void func_004E5B78(s32 wait) +{ + func_0048AA58(D_002215D0, 1, 300, 0, 0); + func_00439AA0(1); + func_004E3300(); + func_00489E20(); + func_004E17B8(); + if (wait) { + while (func_00157FA8()) + func_00138D70(0); + } +} diff --git a/src/pal/game/004E88B8.c b/src/pal/game/004E88B8.c new file mode 100644 index 000000000..fa0f60a14 --- /dev/null +++ b/src/pal/game/004E88B8.c @@ -0,0 +1,24 @@ +#include "common.h" + +s32 D_00220798 = 0; +extern char *D_00221F20; + +/* Append a command packet, prefixing its setup words when needed. */ +void func_004E88B8(s32 command, u64 value, s32 unused) +{ + if (!D_00220798) { + *(u32 *)(D_00221F20 + 0) = 0x10000002u; + *(u32 *)(D_00221F20 + 4) = 0; + *(u32 *)(D_00221F20 + 8) = 0; + *(u32 *)(D_00221F20 + 12) = 0x50000002u; + *(u32 *)(D_00221F20 + 16) = 0x8001; + *(u32 *)(D_00221F20 + 20) = 0x10000000; + *(u32 *)(D_00221F20 + 24) = 14; + *(u32 *)(D_00221F20 + 28) = 0; + D_00221F20 += 32; + } + *(u64 *)D_00221F20 = value; + *(s32 *)(D_00221F20 + 8) = command; + *(u32 *)(D_00221F20 + 12) = 0; + D_00221F20 += 16; +} diff --git a/src/pal/game/004F08E0.c b/src/pal/game/004F08E0.c new file mode 100644 index 000000000..f412906b9 --- /dev/null +++ b/src/pal/game/004F08E0.c @@ -0,0 +1,41 @@ +#include "common.h" + +typedef struct Type1 { + s32 f0, f4; + char pad[0x28]; + s32 f30; + char *f34; + s32 f38, f3C, f40; +} Type1; + +/* Return one or two contiguous ranges from the buffered data. */ +void func_004F08E0(Type1 *p, void **first, s32 *firstSize, void **second, s32 *secondSize) +{ + if (!p->f0) { + if (p->f4 != 4) { + *first = (char *)p + (p->f30 + 8); + *firstSize = 0x28 - p->f30; + *second = p->f34; + *secondSize = p->f40; + } else { + *first = p->f34; + *firstSize = p->f40; + *second = 0; + *secondSize = 0; + } + } else { + s32 size = p->f40 - p->f3C; + s32 offset = p->f38; + if (p->f40 - offset >= size) { + *first = p->f34 + offset; + *firstSize = size; + *second = 0; + *secondSize = 0; + } else { + *first = p->f34 + offset; + *firstSize = p->f40 - p->f38; + *second = p->f34; + *secondSize = size - (p->f40 - p->f38); + } + } +} diff --git a/src/pal/game/00501BC8.c b/src/pal/game/00501BC8.c new file mode 100644 index 000000000..b135f687a --- /dev/null +++ b/src/pal/game/00501BC8.c @@ -0,0 +1,40 @@ +#include "common.h" +typedef struct HashEntry { + u32 key; + void *value; +} HashEntry; +typedef struct Type1 { + s32 f0, f4; + HashEntry entries[1024]; +} Type1; +extern void *func_00501B58(Type1 *, u32); +extern u8 D_00222210; +/* Insert a unique key into one of 1024 open-addressed slots. */ +s32 func_00501BC8(Type1 *table, u32 key, void *value) +{ + if (table->f4 < 0x400) { + if (func_00501B58(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + void *tombstone = (void *)&D_00222210; + char *keys = (char *)table + 8; + u32 probe = key & 0x3FF; + do { + s32 offset = (probe & 0x3FF) * 8; + void **slot = (void **)(values + offset); + void *current = *slot; + if (!current || current == tombstone) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->f4++; + return 1; + } + attempts++; + probe += 0x13D573; + } while (attempts < 0x400); + } + } + return 0; +} diff --git a/src/pal/game/00504E10.c b/src/pal/game/00504E10.c new file mode 100644 index 000000000..dd30f3000 --- /dev/null +++ b/src/pal/game/00504E10.c @@ -0,0 +1,21 @@ +#include "common.h" +typedef struct { + s32 a, b, c; +} Entry; +typedef struct { + s32 index; + s32 pad; + s32 count; + s32 padC; + Entry entries[64]; +} Ring; +extern s32 func_00504EB0(Ring *); +s32 func_00504E10(Ring *p, Entry *entry) +{ + if (p->count == 64) + func_00504EB0(p); + p->entries[p->index] = *entry; + p->index = (p->index + 1) % 64; + p->count++; + return 1; +} diff --git a/src/pal/game/005055E8.c b/src/pal/game/005055E8.c new file mode 100644 index 000000000..6aff598ba --- /dev/null +++ b/src/pal/game/005055E8.c @@ -0,0 +1,52 @@ +#include "common.h" +typedef struct Object Object; +typedef struct Vtable { + void *unused[3]; + u32 (*type)(Object *); + void *f10; + s32 (*supports)(Object *, u32); +} Vtable; +struct Object { + s32 f0, f4; + Vtable *vtable; +}; +typedef struct { + s32 f0; + void *context; +} Manager; +extern Manager D_00222138[]; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, s32); +extern u32 D_00220B50; +static inline Object *resolve(s32 handle) +{ + Manager *m; + Object *obj; + void *world; + if (D_00222138[0].context) + m = D_00222138; + else + m = func_00502150(); + world = 0; + if (m->context) + world = *(void **)((u32)m->context + ((u32) * (s32 *)((char *)m->context + 0x14) << 2)); + obj = func_00501658(world, handle); + if (obj && obj->vtable->supports(obj, D_00220B50)) + return obj; + return 0; +} +typedef s32 (*Callback)(Object *, float *, float *); +extern char D_00335FA8[]; +extern Callback func_00508AA8(void *, u32); +s32 func_005055E8(s32 handle, float *a, float *b) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508AA8(D_00335FA8, type); + if (callback) + result = callback(obj, a, b); + } + return result; +} diff --git a/src/pal/game/00505B40.c b/src/pal/game/00505B40.c new file mode 100644 index 000000000..bda411f17 --- /dev/null +++ b/src/pal/game/00505B40.c @@ -0,0 +1,61 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0xC]; + u32 (*getType)(Object *); + s32 pad10; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; +}; + +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220B50; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +typedef s32 (*Callback)(Object *, f32); +extern Callback func_00508C08(void *, u32); +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220B50)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +extern char D_00336718[]; +static inline Callback handler(u32 kind) +{ + return func_00508C08(D_00336718, kind); +} +s32 func_00505B40(u32 id, f32 amount) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + Callback callback = handler(p->vtable->getType(p)); + if (callback) + result = callback(p, amount); + } + return result; +} diff --git a/src/pal/game/00505D18.c b/src/pal/game/00505D18.c new file mode 100644 index 000000000..9a8a1ad8b --- /dev/null +++ b/src/pal/game/00505D18.c @@ -0,0 +1,52 @@ +#include "common.h" +typedef struct Object Object; +typedef struct Vtable { + void *unused[3]; + u32 (*type)(Object *); + void *f10; + s32 (*supports)(Object *, u32); +} Vtable; +struct Object { + s32 f0, f4; + Vtable *vtable; +}; +typedef struct { + s32 f0; + void *context; +} Manager; +extern Manager D_00222138[]; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, s32); +extern u32 D_00220B50; +static inline Object *resolve(s32 handle) +{ + Manager *m; + Object *obj; + void *world; + if (D_00222138[0].context) + m = D_00222138; + else + m = func_00502150(); + world = 0; + if (m->context) + world = *(void **)((u32)m->context + ((u32) * (s32 *)((char *)m->context + 0x14) << 2)); + obj = func_00501658(world, handle); + if (obj && obj->vtable->supports(obj, D_00220B50)) + return obj; + return 0; +} +typedef s32 (*Callback)(Object *, float); +extern char D_00336470[]; +extern Callback func_00508C88(void *, u32); +s32 func_00505D18(s32 handle, float value) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508C88(D_00336470, type); + if (callback) + result = callback(obj, value); + } + return result; +} diff --git a/src/pal/game/005060D8.c b/src/pal/game/005060D8.c new file mode 100644 index 000000000..90bd59203 --- /dev/null +++ b/src/pal/game/005060D8.c @@ -0,0 +1,55 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; + s32 flags; +}; +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220BE8; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); + +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220BE8)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +s32 func_005060D8(u32 id, s32 enabled) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + result = 1; + if (enabled) + p->flags |= 64; + else + p->flags &= ~64; + } + return result; +} diff --git a/src/pal/game/00506590.c b/src/pal/game/00506590.c new file mode 100644 index 000000000..2453ea482 --- /dev/null +++ b/src/pal/game/00506590.c @@ -0,0 +1,52 @@ +#include "common.h" +typedef struct Object Object; +typedef struct Vtable { + void *unused[3]; + u32 (*type)(Object *); + void *f10; + s32 (*supports)(Object *, u32); +} Vtable; +struct Object { + s32 f0, f4; + Vtable *vtable; +}; +typedef struct { + s32 f0; + void *context; +} Manager; +extern Manager D_00222138[]; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, s32); +extern u32 D_00220B50; +static inline Object *resolve(s32 handle) +{ + Manager *m; + Object *obj; + void *world; + if (D_00222138[0].context) + m = D_00222138; + else + m = func_00502150(); + world = 0; + if (m->context) + world = *(void **)((u32)m->context + ((u32) * (s32 *)((char *)m->context + 0x14) << 2)); + obj = func_00501658(world, handle); + if (obj && obj->vtable->supports(obj, D_00220B50)) + return obj; + return 0; +} +typedef s32 (*Callback)(Object *, u32); +extern char D_00336308[]; +extern Callback func_00508B98(void *, u32); +s32 func_00506590(s32 handle, u32 value) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508B98(D_00336308, type); + if (callback) + result = callback(obj, value); + } + return result; +} diff --git a/src/pal/game/00506A70.c b/src/pal/game/00506A70.c new file mode 100644 index 000000000..77ee62dd2 --- /dev/null +++ b/src/pal/game/00506A70.c @@ -0,0 +1,61 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0xC]; + u32 (*getType)(Object *); + s32 pad10; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; +}; + +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220B50; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +typedef s32 (*Callback)(Object *, f32); +extern Callback func_00508C08(void *, u32); +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220B50)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +extern char D_00336738[]; +static inline Callback handler(u32 kind) +{ + return func_00508C08(D_00336738, kind); +} +s32 func_00506A70(u32 id, f32 amount) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + Callback callback = handler(p->vtable->getType(p)); + if (callback) + result = callback(p, amount); + } + return result; +} diff --git a/src/pal/game/00506C08.c b/src/pal/game/00506C08.c new file mode 100644 index 000000000..53f3a0946 --- /dev/null +++ b/src/pal/game/00506C08.c @@ -0,0 +1,29 @@ +#include "common.h" + +typedef struct Type1 { + s32 f0; + char *f4; +} Type1; +extern Type1 D_00222138[]; +extern Type1 *func_00502150(void); +extern s32 func_00500CF0(void *, s32, s32); + +/* Add a resource handle to the active object's indexed slot. */ +s32 func_00506C08(s32 index, s32 handle) +{ + Type1 *p; + char *state; + void *selected; + s32 result = 0; + if (D_00222138[0].f4) + p = D_00222138; + else + p = func_00502150(); + state = p->f4; + selected = 0; + if (state) + selected = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + if (selected) + result = func_00500CF0(selected, index, handle); + return result; +} diff --git a/src/pal/game/00506F68.c b/src/pal/game/00506F68.c new file mode 100644 index 000000000..553c826d6 --- /dev/null +++ b/src/pal/game/00506F68.c @@ -0,0 +1,49 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; +}; +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220BEC; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +extern s32 func_0050DB58(Object *, u32, s32); +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220BEC)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +s32 func_00506F68(u32 id, u32 child, s32 index) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) + result = func_0050DB58(p, child, index); + return result; +} diff --git a/src/pal/game/005071B8.c b/src/pal/game/005071B8.c new file mode 100644 index 000000000..6153cfda8 --- /dev/null +++ b/src/pal/game/005071B8.c @@ -0,0 +1,51 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; +}; +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220BF4; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +extern void func_0050EE58(Object *, u32); +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220BF4)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +s32 func_005071B8(u32 id, u32 value) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + result = 1; + func_0050EE58(p, value); + } + return result; +} diff --git a/src/pal/game/00507758.c b/src/pal/game/00507758.c new file mode 100644 index 000000000..ab33a0718 --- /dev/null +++ b/src/pal/game/00507758.c @@ -0,0 +1,51 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; +}; +typedef struct { + s32 pad; + char *table; +} Manager; +extern Manager D_00222138[]; +extern u32 D_00220C00; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +extern void func_00510000(Object *, s32, s32); +static inline Manager *getManager(void) +{ + Manager *p = D_00222138; + if (p->table) + return p; + return func_00502150(); +} +static inline Object *valid(Object *p) +{ + if (p && p->vtable->isType(p, D_00220C00)) + return p; + return 0; +} +static inline Object *getTyped(u32 id) +{ + Manager *m = getManager(); + char *state = m->table; + void *table = 0; + if (state) + table = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + return valid(func_00501658(table, id)); +} +s32 func_00507758(u32 id, s32 mask, s32 enabled) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + func_00510000(p, mask, enabled); + result = 1; + } + return result; +} diff --git a/src/pal/game/00509738.c b/src/pal/game/00509738.c new file mode 100644 index 000000000..4e85178b7 --- /dev/null +++ b/src/pal/game/00509738.c @@ -0,0 +1,34 @@ +#include "common.h" +typedef s32 (*Callback)(f32, void *); +typedef struct { + u32 key; + Callback value; +} Entry; +typedef struct { + s32 pad; + s32 count; + Entry entries[8]; +} Table; +u8 D_00222217 = 0; +extern Callback func_00508C88(Table *, u32); +s32 func_00509738(Table *a, u32 b, Callback c) +{ + if (a->count < 8 && !func_00508C88(a, b)) { + s32 i = 0; + char *values = (char *)a + 12; + Callback sentinel = (Callback)&D_00222217; + char *keys = (char *)a + 8; + u32 probe = b & 7; + for (; i < 8; i++, probe += 0x13D573) { + u32 offset = (probe & 7) * 8; + Callback *slot = (Callback *)(values + offset); + if (!*slot || *slot == sentinel) { + *slot = c; + *(u32 *)(keys + offset) = b; + a->count++; + return 1; + } + } + } + return 0; +} diff --git a/src/pal/game/00509850.c b/src/pal/game/00509850.c new file mode 100644 index 000000000..9db04adaf --- /dev/null +++ b/src/pal/game/00509850.c @@ -0,0 +1,43 @@ +#include "common.h" + +typedef s32 (*Type2)(void *, f32 *); +typedef struct Type3 { + u32 f0; + Type2 f4; +} Type3; +typedef struct Type1 { + s32 f0, f4; + Type3 f8[8]; +} Type1; +extern Type2 func_00508CF8(Type1 *, u32); +u8 D_00222218 = 0; + +/* Insert a unique key into one of eight open-addressed slots. */ +s32 func_00509850(Type1 *table, u32 key, Type2 value) +{ + if (table->f4 < 8) { + if (func_00508CF8(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + Type2 tombstone = (Type2)&D_00222218; + char *keys = (char *)table + 8; + u32 probe = key & 7; + do { + s32 offset = (probe & 7) * 8; + Type2 *slot = (Type2 *)(values + offset); + Type2 current = *slot; + if (!current || current == tombstone) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->f4++; + return 1; + } + attempts++; + probe += 0x13D573; + } while (attempts < 8); + } + } + return 0; +} diff --git a/src/pal/game/00509960.c b/src/pal/game/00509960.c new file mode 100644 index 000000000..9ada01f4f --- /dev/null +++ b/src/pal/game/00509960.c @@ -0,0 +1,42 @@ +#include "common.h" +/* This storage-only table erases heterogeneous callback argument lists. */ +typedef s32 (*Type2)(); +typedef struct HashEntry { + u32 key; + Type2 value; +} HashEntry; +typedef struct Type1 { + s32 f0, f4; + HashEntry entries[8]; +} Type1; +extern Type2 func_00508B98(Type1 *, u32); +u8 D_00222215 = 0; +/* Insert a unique key into one of eight open-addressed slots. */ +s32 func_00509960(Type1 *table, u32 key, Type2 value) +{ + if (table->f4 < 8) { + if (func_00508B98(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + Type2 tombstone = (Type2)&D_00222215; + char *keys = (char *)table + 8; + u32 probe = key & 7; + do { + s32 offset = (probe & 7) * 8; + Type2 *slot = (Type2 *)(values + offset); + Type2 current = *slot; + if (!current || current == tombstone) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->f4++; + return 1; + } + attempts++; + probe += 0x13D573; + } while (attempts < 8); + } + } + return 0; +} diff --git a/src/pal/game/0050A660.c b/src/pal/game/0050A660.c new file mode 100644 index 000000000..ae7a45d22 --- /dev/null +++ b/src/pal/game/0050A660.c @@ -0,0 +1,34 @@ +#include "common.h" +typedef s32 (*Callback)(void *, u32, s16, s16, u32); +typedef struct { + u32 key; + Callback value; +} Entry; +typedef struct { + s32 pad; + s32 count; + Entry entries[8]; +} Table; +u8 D_0022221E = 0; +extern Callback func_00508F98(Table *, u32); +s32 func_0050A660(Table *a, u32 b, Callback c) +{ + if (a->count < 8 && !func_00508F98(a, b)) { + s32 i = 0; + char *values = (char *)a + 12; + Callback sentinel = (Callback)&D_0022221E; + char *keys = (char *)a + 8; + u32 probe = b & 7; + for (; i < 8; i++, probe += 0x13D573) { + u32 offset = (probe & 7) * 8; + Callback *slot = (Callback *)(values + offset); + if (!*slot || *slot == sentinel) { + *slot = c; + *(u32 *)(keys + offset) = b; + a->count++; + return 1; + } + } + } + return 0; +} diff --git a/src/pal/game/0050B5F8.c b/src/pal/game/0050B5F8.c new file mode 100644 index 000000000..263c4159a --- /dev/null +++ b/src/pal/game/0050B5F8.c @@ -0,0 +1,43 @@ +#include "common.h" + +typedef s32 (*Type2)(void *, u32, u32, u32, u32); +typedef struct Type3 { + u32 f0; + Type2 f4; +} Type3; +typedef struct Type1 { + s32 f0, f4; + Type3 f8[8]; +} Type1; +extern Type2 func_00509088(Type1 *, u32); +u8 D_00222220 = 0; + +/* Insert a unique key into one of eight open-addressed slots. */ +s32 func_0050B5F8(Type1 *table, u32 key, Type2 value) +{ + if (table->f4 < 8) { + if (func_00509088(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + Type2 tombstone = (Type2)&D_00222220; + char *keys = (char *)table + 8; + u32 probe = key & 7; + do { + s32 offset = (probe & 7) * 8; + Type2 *slot = (Type2 *)(values + offset); + Type2 current = *slot; + if (!current || current == tombstone) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->f4++; + return 1; + } + attempts++; + probe += 0x13D573; + } while (attempts < 8); + } + } + return 0; +} diff --git a/src/pal/game/0050C980.c b/src/pal/game/0050C980.c new file mode 100644 index 000000000..d84140bc4 --- /dev/null +++ b/src/pal/game/0050C980.c @@ -0,0 +1,41 @@ +#include "common.h" +typedef s32 (*Type2)(void *, f32, f32, f32, f32); +typedef struct HashEntry { + u32 key; + Type2 value; +} HashEntry; +typedef struct Type1 { + s32 f0, f4; + HashEntry entries[8]; +} Type1; +extern Type2 func_00509168(Type1 *, u32); +u8 D_00222222 = 0; +/* Insert a unique key into one of eight open-addressed slots. */ +s32 func_0050C980(Type1 *table, u32 key, Type2 value) +{ + if (table->f4 < 8) { + if (func_00509168(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + Type2 tombstone = (Type2)&D_00222222; + char *keys = (char *)table + 8; + u32 probe = key & 7; + do { + s32 offset = (probe & 7) * 8; + Type2 *slot = (Type2 *)(values + offset); + Type2 current = *slot; + if (!current || current == tombstone) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->f4++; + return 1; + } + attempts++; + probe += 0x13D573; + } while (attempts < 8); + } + } + return 0; +} diff --git a/src/pal/game/005125F8.c b/src/pal/game/005125F8.c new file mode 100644 index 000000000..27b1fc7b4 --- /dev/null +++ b/src/pal/game/005125F8.c @@ -0,0 +1,38 @@ +#include "common.h" + +typedef struct Type1 { + u32 f0; + struct Type1 *f4, *f8; +} Type1; +extern u32 D_00220C28; +extern s32 D_00220C20; +extern Type1 *D_00339238[], *D_00339254[]; +extern Type1 *func_00512470(u32); + +/* Remove a live entry and move it to the free list, returning its next entry. */ +Type1 *func_005125F8(u32 *handle) +{ + u32 index = (*handle & D_00220C28) >> D_00220C20; + Type1 *p = func_00512470(*handle); + Type1 *result = 0; + if (p) { + Type1 **free = &D_00339254[index]; + Type1 **live = (Type1 **)((u32)D_00339254 - 0x1C + index * 4); + Type1 *previous = p->f8; + Type1 *next = p->f4; + if (previous) + previous->f4 = next; + if (p->f4) + p->f4->f8 = p->f8; + if (*live == p) + *live = p->f4; + p->f8 = 0; + p->f4 = *free; + p->f0 = 0xFFFFFFFFu; + if (*free) + (*free)->f8 = p; + *free = p; + result = next; + } + return result; +} diff --git a/src/pal/game/00526848.c b/src/pal/game/00526848.c new file mode 100644 index 000000000..16fb51cdd --- /dev/null +++ b/src/pal/game/00526848.c @@ -0,0 +1,16 @@ +#include "common.h" +void func_00526848(char *p) +{ + float v; + if (*(int *)(p + 0x1AE0) == 1) { + *(float *)(p + 0x1AFC) = 2.0f; + return; + } + if (((*(int *)(p + 0x25CC) == 4 || *(int *)(p + 0x25CC) == 21) && *(int *)(p + 0x1AE0) == 2) || *(unsigned char *)(p + 0x2ECD)) + v = 0.6f; + else + v = 1.15f; + *(float *)(p + 0x1AFC) = v; + if (*(int *)(p + 0x25D4) == 3) + *(float *)(p + 0x1AFC) = 1.75f; +} diff --git a/src/pal/game/0053E0A0.c b/src/pal/game/0053E0A0.c new file mode 100644 index 000000000..03721ece6 --- /dev/null +++ b/src/pal/game/0053E0A0.c @@ -0,0 +1,21 @@ +#include "common.h" +extern void *func_0053DDA0(char *, int, int); +extern char *func_0053DCD0(char *, int, int, int); +extern void func_0053DE58(void *, const void *, int); +void func_0053E0A0(char *p, int value, unsigned short type, int extra) +{ + char *event; + int data; + if (type == 6 || type == 13) { + if (*(int *)(p + 0x304)) + return; + *(int *)(p + 0x304) = 1; + } + if (func_0053DDA0(p, type, 0)) + return; + event = func_0053DCD0(p, type, 0, -1); + data = value; + func_0053DE58(event, &data, 4); + *(int *)(event + 0x50) = extra; + *(int *)(p + 0x320) = 0; +} diff --git a/src/pal/game/0054B968.c b/src/pal/game/0054B968.c new file mode 100644 index 000000000..7361a4f2e --- /dev/null +++ b/src/pal/game/0054B968.c @@ -0,0 +1,16 @@ +#include "common.h" +extern char *func_0054B080(int); +extern int func_0054BBF0(char *, int, int), func_0054B180(char *, int), func_0054B5A0(char *, int); +int func_0054B968(char *p, int id) +{ + if (((u32)id - 1) < 6) { + int index = *(unsigned char *)(func_0054B080(id) + 8); + func_0054BBF0(p, index, 1); + if (func_0054B180(p, id) || id == 0) { + *(unsigned char *)(p + index * 0x44 + 0xA40) = id; + func_0054B5A0(p, id); + return 1; + } + } + return 0; +} diff --git a/src/pal/game/0054E148.c b/src/pal/game/0054E148.c new file mode 100644 index 000000000..e41e2700d --- /dev/null +++ b/src/pal/game/0054E148.c @@ -0,0 +1,10 @@ +#include "common.h" +float D_0022108C = 0.18f, D_00221090 = 0.82f, D_00221094 = 0.16f, D_00221098 = 0.88f; +extern int D_001D3FC0[]; +extern void func_0044A540(int, int, int, int, u64); +void func_0054E148(void) +{ + float w = (float)D_001D3FC0[0]; + float h = (float)D_001D3FC0[1]; + func_0044A540((int)(h * D_00221094), (int)(h * D_00221098), (int)(w * D_0022108C), (int)(w * D_00221090), 0x64191919); +} From 070accb8eaa2e9949cf1d19196eba4c5631c05a6 Mon Sep 17 00:00:00 2001 From: Joshua Nierentz Date: Tue, 3 Nov 2026 07:17:44 +0100 Subject: [PATCH 2/2] Use source-pointer types in renderer wrappers --- src/pal/game/0044DFE0.c | 4 ++-- src/pal/game/0044E158.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pal/game/0044DFE0.c b/src/pal/game/0044DFE0.c index 402410b62..095ce508d 100644 --- a/src/pal/game/0044DFE0.c +++ b/src/pal/game/0044DFE0.c @@ -1,12 +1,12 @@ #include "common.h" typedef struct { - s32 a, b, c; + const void *a, *b, *c; } Data; extern char D_00239640[]; extern s32 D_002213F8; extern void func_0044B3D0(void); extern void func_0044D860(void *); -extern void func_0044D4B0(s32, u64, u64, u64, s32, s32); +extern void func_0044D4B0(s32, const void *, const void *, const void *, s32, s32); void func_0044DFE0(Data *p, s32 a, s32 b, s32 c) { if (!*(u8 *)D_00239640) diff --git a/src/pal/game/0044E158.c b/src/pal/game/0044E158.c index 2a1bd47f2..ece70785f 100644 --- a/src/pal/game/0044E158.c +++ b/src/pal/game/0044E158.c @@ -1,10 +1,10 @@ #include "common.h" typedef struct { - int a, b, c; + const void *a, *b, *c; } Args; extern unsigned char D_00239640[]; extern int D_002213F8; -extern void func_0044B3D0(void), func_0044D860(void *), func_0044D4B0(s32, u64, u64, u64, s32, s32); +extern void func_0044B3D0(void), func_0044D860(void *), func_0044D4B0(s32, const void *, const void *, const void *, s32, s32); void func_0044E158(Args *p, int flags) { if (!D_00239640[0])