diff --git a/README.md b/README.md index 6e78a99ab..c0166bd3c 100644 --- a/README.md +++ b/README.md @@ -79,13 +79,13 @@ 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% | -| Engine core (core.text) | 770 of 1,668 | 73,268 of 288,232 bytes (25.42%) | 25.98% | +| **Main program** | 3,295 of 8,945 | 274,528 of 2,202,512 bytes (12.46%) | 12.87% | +| Engine core (core.text) | 772 of 1,668 | 73,404 of 288,232 bytes (25.47%) | 26.03% | | 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) | 2,000 of 4,786 | 178,156 of 1,422,048 bytes (12.53%) | 12.71% | | 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% | +| **Shared level code** | 1,642 of 5,088 | 127,004 of 2,008,520 bytes (6.32%) | 6.98% | | **Level-specific code** | 1,089 of 4,080 | 94,180 of 1,601,892 bytes (5.88%) | 6.29% | | Level 00: Multiplayer Menu | 758 of 2,826 | 63,332 of 943,820 bytes (6.71%) | 7.12% | | Level 01: Dreadzone Station (and 21) | 91 of 357 | 7,656 of 189,772 bytes (4.03%) | 4.03% | @@ -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** | 6,026 of 18,113 | 495,712 of 5,812,924 bytes (8.53%) | 9.02% | -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. 274,528 bytes (4.72%) are in units with nothing left to decompile. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 3204d4ca0..9b5ce1dec 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -47,6 +47,24 @@ The C of 5 functions (`src/core/00155908.c`, `src/game/0046D6A8.c`, `src/game/00 request #43 (Shaar-games), and was then checked against this game's SCUS_974.65 bytes. Each file says so in its first-line comment. +## PAL engine-family reference reconstructions + +The PAL functions listed in [`config/pal/crossgame_sources.tsv`](config/pal/crossgame_sources.tsv) +were independently reconstructed against RAC4 retail after comparing public +engine-family function catalogues and C implementations. The table records an +immutable repository commit, file and reference function for each reconstruction; +the C files also carry a reference comment. + +References include RAC1 and RAC2 (GPL-3.0 project code), RAC3, and the unified +[OpenRAC repository](https://github.com/OpenRAC/OpenRAC). RAC3's decompiled game +sources have the separate scope described in its `LEGAL.md`, as noted above. +These credits do not apply one blanket licence to all reference material. +The original authors and contributors remain credited by those projects. + +Addresses, field layouts, argument types and control flow were checked against +RAC4 PAL rather than inferred from a fingerprint alone. No proprietary SDK source, +samples or headers were used. + ## Standard C library algorithm references (`src/core/`) The matching reconstructions in this contribution were written against the retail diff --git a/config/pal/crossgame_sources.tsv b/config/pal/crossgame_sources.tsv new file mode 100644 index 000000000..3dee2768b --- /dev/null +++ b/config/pal/crossgame_sources.tsv @@ -0,0 +1,31 @@ +# Public engine-family references for independently reconstructed PAL C. +# Fingerprints identify candidates; matching and address checks use RAC4 retail. +name repository commit path reference_function fingerprint +func_0011C750 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/levels/shared/L08_002F2D10.c func_L08_0033CD18 f4933e8baccd7b96 +func_0011C978 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/levels/shared/L08_002F2D10.c func_L08_0033CD18 f4933e8baccd7b96 +func_00447A00 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/game/0027A0F8.c func_0027A0F8 abf7208e37f3d448 +func_00447AD8 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/382380.c func_00386678 8220108ff95866dc +func_004493D8 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/game/0027C660-rc2.c func_0027C660 be6e56ff4c6b1909 +func_0044B268 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/382380.c func_0038C3B0 0236471f1d7cafea +func_00454E18 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/38DED0.c func_0038E3C8 2a8ef2d0f64df86f +func_00457E60 OpenRAC/OpenRAC 73f725bf54bb1bf6d8b9bb5b1511ed00d551fbde games/rac3/ntsc/src/frontbin/3896E8.c func_0038C840 - +func_0045F078 OpenRAC/rac1-decomp 1d8228cc0c81da7bc2bdc3e77479ee050e0ef434 src/game/ui/hud.c LinkHudBank / func_001FF7F0 fc206bca7a66afcf +func_004635A8 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/397D48.c func_00399810 c6bc1c172c6ef5f9 +func_004694C8 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/39A6E0.c func_0039E788 1422f64c88b54fb5 +func_00469508 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/39A6E0.c func_0039E7C8 67fdf2c53419ef94 +func_0046D780 OpenRAC/OpenRAC 73f725bf54bb1bf6d8b9bb5b1511ed00d551fbde games/rac3/ntsc/src/frontbin/3BDAC0.c func_003BDEA8 - +func_004749A0 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L01_004463D0.c func_L01_004463F8 3b7a1d540bec2a9e +func_00476678 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L01_004485E0.c func_L01_00448728 74b2e5bb1d8515dd +func_00476D30 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L01_00448CC0.c func_L01_00448CC0 8370610e20192060 +func_00476DF8 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L01_00448CC0.c func_L01_00448D88 93fffc2b6bf7c67d +func_00479E28 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/levels/shared/L00_00316F60.c func_L00_00322EC8 4d90c88019d280c9 +func_004D4058 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L01_0047DBB0.c func_L01_0047DE68 cee158fb529be4d7 +func_004D4D38 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/3B3050.c func_003B3910 f879e157d6c86f3d +func_004DFED8 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/game/002E3820-rc2.c func_002E3820 6168986a7581918b +func_004E87F8 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/game/002FC468.c func_002FC468 b47b02c2d8dd48ad +func_004EB520 OpenRAC/rac2-decomp 99f35ac2c084fc59cdf3d631f8f960a825e7a49c src/levels/shared/L00_0037B6F0.c func_L00_0037DD18 e00b49bbdca9142f +func_004EFAD0 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/3AA9D8.c func_003AACC0 7af571c5dc829dac +func_004F0B38 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/3B0048.c func_003B0470 ef4406041fc87225 +func_004F1C08 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/3B0FF0.c func_003B1530 7ea4ba7258cca28b +func_00511BA0 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/frontbin/3F2238.c func_003F2268 a4369948393ac7d2 +func_00541A50 OpenRAC/rac3-decomp cd0e7c20fd8a93116566ba2e024fa2f3536bd30c src/levels/shared/L39_0066C748.c func_L39_0066D888 e5670ece16ce88e0 diff --git a/config/pal/map.tsv b/config/pal/map.tsv index 9393df2e1..b0435b694 100644 --- a/config/pal/map.tsv +++ b/config/pal/map.tsv @@ -21,9 +21,11 @@ func_0011C3E8 src/core/0011C3E8.c match func_0011C3E8 main:core.text:0011C3E8:29 func_0011C510 src/core/0011C510.c match func_0011C510 main:core.text:0011C510:88 100.00 func_0011C5E0 src/core/0011C5E0.c match func_0011C5E0 main:core.text:0011C5E0:220 100.00 func_0011C6C0 src/core/0011C6C0.c match func_0011C6C0 main:core.text:0011C6C0:140 100.00 +func_0011C750 src/pal/core/0011C750.c match func_0011C750 main:core.text:0011C750:68 100.00 func_0011C840 src/core/0011C840.c match func_0011C840 main:core.text:0011C840:220 100.00 func_0011C920 src/core/0011C920.c match func_0011C920 main:core.text:0011C920:44 100.00 func_0011C950 src/core/0011C950.c match func_0011C950 main:core.text:0011C950:32 100.00 +func_0011C978 src/pal/core/0011C978.c match func_0011C978 main:core.text:0011C978:68 100.00 func_0011C9C0 src/core/0011C9C0.c match func_0011C9C0 main:core.text:0011C9C0:48 100.00 func_0011C9F0 src/core/0011C9F0.c match func_0011C9F0 main:core.text:0011C9F0:276 100.00 func_0011CB08 src/core/0011CB08.c match func_0011CB08 main:core.text:0011CB08:1036 100.00 @@ -863,6 +865,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 +895,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 @@ -908,12 +912,15 @@ func_00446988 src/game/00446988.c match func_00446FC8 main:.text:00446FC8:96,fro func_00446A50 src/game/00446A50.c match func_00447090 main:.text:00447090:32,frontbin:.text:00446938:32 100.00 func_00446C70 src/game/00446C70.c match func_004472B0 main:.text:004472B0:8,frontbin:.text:00446B58:8 100.00 func_00447938 src/game/00447938.c match func_00447F78 main:.text:00447F78:80,frontbin:.text:00447820:80 100.00 +func_00447A00 src/pal/game/00447A00.c match func_00447A00 main:.text:00447A00:212 100.00 +func_00447AD8 src/pal/game/00447AD8.c match func_00447AD8 main:.text:00447AD8:184 100.00 func_00448960 src/game/00448960.c match func_00448FA0 main:.text:00448FA0:120,frontbin:.text:00448848:120 100.00 func_00448A20 src/game/00448A20.c match func_00449060 main:.text:00449060:68,frontbin:.text:00448908:68 100.00 func_00448C10 src/game/00448C10.c match func_00449250 main:.text:00449250:64,frontbin:.text:00448AF8:64 100.00 func_00448D60 src/pal/game/00448D60.c match func_00448D60 main:.text:00448D60:104 100.00 func_00449298 src/game/00449298.c match func_004498D8 main:.text:004498D8:184,frontbin:.text:00449180:184 100.00 func_004493B0 src/game/004493B0.c match func_004499F0 main:.text:004499F0:56,frontbin:.text:00449298:56 100.00 +func_004493D8 src/pal/game/004493D8.c match func_004493D8 main:.text:004493D8:264 100.00 func_00449A28 src/pal/game/00449A28.c match func_00449A28 main:.text:00449A28:92 100.00 func_0044B110 src/game/0044B110.c match func_0044B7B8 main:.text:0044B7B8:20,frontbin:.text:0044B060:20 100.00 func_0044B128 src/game/0044B128.c match func_0044B7D0 main:.text:0044B7D0:16,frontbin:.text:0044B078:16 100.00 @@ -921,10 +928,15 @@ func_0044B138 src/game/0044B138.c match func_0044B7E0 main:.text:0044B7E0:60,fro func_0044B178 src/game/0044B178.c match func_0044B820 main:.text:0044B820:60,frontbin:.text:0044B0C8:60 100.00 func_0044B1B8 src/game/0044B1B8.c match func_0044B860 main:.text:0044B860:152,frontbin:.text:0044B108:152 100.00 func_0044B250 src/game/0044B250.c match func_0044B8F8 main:.text:0044B8F8:36,frontbin:.text:0044B1A0:36 100.00 +func_0044B268 src/pal/game/0044B268.c match func_0044B268 main:.text:0044B268:316 100.00 func_0044B680 src/game/0044B680.c match func_0044BD28 main:.text:0044BD28:48,frontbin:.text:0044B5D0:48 100.00 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_0044E090 src/pal/game/0044E090.c match func_0044E090 main:.text:0044E090:196 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 @@ -933,6 +945,7 @@ func_004545F8 src/game/004545F8.c match func_00454E10 main:.text:00454E10:8,fron func_00454A60 src/game/00454A60.c match func_00455278 main:.text:00455278:8,frontbin:.text:00454B20:8 100.00 func_00454A68 src/game/00454A68.c match func_00455280 main:.text:00455280:8,frontbin:.text:00454B28:8 100.00 func_00454C18 src/pal/game/00454C18.c match func_00454C18 main:.text:00454C18:28 100.00 +func_00454E18 src/pal/game/00454E18.c match func_00454E18 main:.text:00454E18:380 100.00 func_00455E40 src/game/00455E40.c match func_00456658 main:.text:00456658:56,frontbin:.text:00455F00:56 100.00 func_004571C0 src/game/004571C0.c match func_004579D8 main:.text:004579D8:28,frontbin:.text:00457280:28 100.00 func_004571E0 src/game/004571E0.c match func_004579F8 main:.text:004579F8:28,frontbin:.text:004572A0:28 100.00 @@ -940,10 +953,16 @@ func_00457200 src/game/00457200.c match func_00457A18 main:.text:00457A18:28,fro func_00457220 src/game/00457220.c match func_00457A38 main:.text:00457A38:36,frontbin:.text:004572E0:36 100.00 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_00457AF8 src/pal/game/00457AF8.c match func_00457AF8 main:.text:00457AF8:168 100.00 +func_00457BA0 src/pal/game/00457BA0.c match func_00457BA0 main:.text:00457BA0:224 100.00 func_00457C90 src/pal/game/00457C90.c match func_00457C90 main:.text:00457C90:92 100.00 +func_00457CF0 src/pal/game/00457CF0.c match func_00457CF0 main:.text:00457CF0:184 100.00 +func_00457DA8 src/pal/game/00457DA8.c match func_00457DA8 main:.text:00457DA8:184 100.00 +func_00457E60 src/pal/game/00457E60.c match func_00457E60 main:.text:00457E60:52 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 +func_00458E88 src/pal/game/00458E88.c match func_00458E88 main:.text:00458E88:112 100.00 func_004593D8 src/game/004593D8.c match func_00459BF0 main:.text:00459BF0:40,frontbin:.text:00459498:40 100.00 func_00459408 src/game/00459408.c match func_00459C20 main:.text:00459C20:36,frontbin:.text:004594C8:36 100.00 func_004596E0 src/game/004596E0.c match func_00459EF8 main:.text:00459EF8:108,frontbin:.text:004597A0:108 100.00 @@ -971,6 +990,8 @@ 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_0045D6C0 src/pal/game/0045D6C0.c match func_0045D6C0 main:.text:0045D6C0:188 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 +999,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 @@ -987,6 +1009,7 @@ func_0045E808 src/game/0045E808.c match func_0045F020 main:.text:0045F020:40,fro func_0045E830 src/game/0045E830.c match func_0045F048 main:.text:0045F048:44,frontbin:.text:0045E8F0:44 100.00 func_0045EA10 src/pal/game/0045EA10.c match func_0045EA10 main:.text:0045EA10:88 100.00 func_0045EFA8 src/pal/game/0045EFA8.c match func_0045EFA8 main:.text:0045EFA8:116 100.00 +func_0045F078 src/pal/game/0045F078.c match func_0045F078 main:.text:0045F078:352 100.00 func_0045F460 src/game/0045F460.c match func_0045FC78 main:.text:0045FC78:52,frontbin:.text:0045F520:52 100.00 func_0045F9F8 src/game/0045F9F8.c match func_00460210 main:.text:00460210:28,frontbin:.text:0045FAB8:28 100.00 func_0045FC28 src/pal/game/0045FC28.c match func_0045FC28 main:.text:0045FC28:80 100.00 @@ -1024,6 +1047,7 @@ func_00461E08 src/game/00461E08.c match func_00462648 main:.text:00462648:64,fro func_00461E48 src/game/00461E48.c match func_00462688 main:.text:00462688:68,frontbin:.text:00461F30:68 100.00 func_00461E90 src/game/00461E90.c match func_004626D0 main:.text:004626D0:16,frontbin:.text:00461F78:16 100.00 func_004625A0 src/game/004625A0.c match func_00462DE0 main:.text:00462DE0:104,frontbin:.text:00462688:104 100.00 +func_004635A8 src/pal/game/004635A8.c match func_004635A8 main:.text:004635A8:276 100.00 func_00464088 src/game/00464088.c match func_004648C8 main:.text:004648C8:8,frontbin:.text:00464170:8 100.00 func_00464878 src/pal/game/00464878.c match func_00464878 main:.text:00464878:80 100.00 func_00464980 src/game/00464980.c match func_004651C0 main:.text:004651C0:252,frontbin:.text:00464A68:252 100.00 @@ -1041,6 +1065,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,10 +1075,12 @@ 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 func_00465F18 src/game/00465F18.c match func_00466760 main:.text:00466760:8,frontbin:.text:00466008:8 100.00 +func_00466128 src/pal/game/00466128.c match func_00466128 main:.text:00466128:160 100.00 func_00466268 src/pal/game/00466268.c match func_00466268 main:.text:00466268:128 100.00 func_00468B20 src/game/00468B20.c match func_004693B0 main:.text:004693B0:28,frontbin:.text:00468C58:28 100.00 func_00468B40 src/game/00468B40.c match func_004693D0 main:.text:004693D0:56,frontbin:.text:00468C78:56 100.00 @@ -1062,6 +1089,8 @@ func_00468BE0 src/game/00468BE0.c match func_00469470 main:.text:00469470:88,fro func_004690E8 src/game/004690E8.c match func_00469978 main:.text:00469978:48,frontbin:.text:00469220:48 100.00 func_00469280 src/game/00469280.c differs - - 0.00 func_004694B0 src/game/004694B0.c match func_00469D68 main:.text:00469D68:8,frontbin:.text:00469610:8 100.00 +func_004694C8 src/pal/game/004694C8.c match func_004694C8 main:.text:004694C8:60 100.00 +func_00469508 src/pal/game/00469508.c match func_00469508 main:.text:00469508:276 100.00 func_00469610 src/game/00469610.c match func_00469EC8 main:.text:00469EC8:8,frontbin:.text:00469770:8 100.00 func_00469B10 src/pal/game/00469B10.c match func_00469B10 main:.text:00469B10:96 100.00 func_0046A290 src/game/0046A290.c match func_0046AB50 main:.text:0046AB50:112,frontbin:.text:0046A410:112 100.00 @@ -1085,6 +1114,7 @@ func_0046D5B8 src/game/0046D5B8.c match func_0046DE98 main:.text:0046DE98:8,fron func_0046D5C0 src/game/0046D5C0.c match func_0046DEA0 main:.text:0046DEA0:64,frontbin:.text:0046D760:64 100.00 func_0046D668 src/game/0046D668.c match func_0046DF48 main:.text:0046DF48:60,frontbin:.text:0046D808:60 100.00 func_0046D6A8 src/game/0046D6A8.c match func_0046DF88 main:.text:0046DF88:92,frontbin:.text:0046D848:92 100.00 +func_0046D780 src/pal/game/0046D780.c match func_0046D780 main:.text:0046D780:552 100.00 func_0046D7D8 src/game/0046D7D8.c match func_0046E0B8 main:.text:0046E0B8:68,frontbin:.text:0046D978:68 100.00 func_0046D820 src/game/0046D820.c match func_0046E100 main:.text:0046E100:64,frontbin:.text:0046D9C0:64 100.00 func_0046DAA0 src/game/0046DAA0.c match func_0046E380 main:.text:0046E380:84,frontbin:.text:0046DC40:84 100.00 @@ -1112,6 +1142,7 @@ func_004725D8 src/game/004725D8.c match func_00472EB8 main:.text:00472EB8:84,fro func_00472630 src/game/00472630.c match func_00472F10 main:.text:00472F10:96,frontbin:.text:004727D0:96 100.00 func_00472940 src/game/00472940.c match func_00473220 main:.text:00473220:148,frontbin:.text:00472AE0:148 100.00 func_00472F70 src/pal/game/00472F70.c match func_00472F70 main:.text:00472F70:72 100.00 +func_004730F8 src/pal/game/004730F8.c match func_004730F8 main:.text:004730F8:152 100.00 func_00473190 src/pal/game/00473190.c match func_00473190 main:.text:00473190:76 100.00 func_004731E0 src/pal/game/004731E0.c match func_004731E0 main:.text:004731E0:60 100.00 func_004737F0 src/game/004737F0.c match func_004740D0 main:.text:004740D0:120,frontbin:.text:00473990:120 100.00 @@ -1125,6 +1156,7 @@ func_00473DE0 src/game/00473DE0.c match func_004746B8 main:.text:004746B8:316,fr func_00474058 src/pal/game/00474058.c match func_00474058 main:.text:00474058:108 100.00 func_00474090 src/game/00474090.c match func_00474968 main:.text:00474968:48,frontbin:.text:00474228:48 100.00 func_004742B0 src/game/004742B0.c match func_00474B88 main:.text:00474B88:32,frontbin:.text:00474448:32 100.00 +func_004749A0 src/pal/game/004749A0.c match func_004749A0 main:.text:004749A0:204 100.00 func_00474DB0 src/game/00474DB0.c match func_00475688 main:.text:00475688:28,frontbin:.text:00474F48:28 100.00 func_00474E0C src/game/00474E0C.c match func_0046DE98 main:.text:0046DE98:8,frontbin:.text:0046D758:8 100.00 func_004756A8 src/game/004756A8.c match func_00475F88 main:.text:00475F88:36,frontbin:.text:00475848:36 100.00 @@ -1134,7 +1166,10 @@ func_004757E0 src/game/004757E0.c match func_004760C0 main:.text:004760C0:116,fr func_00476320 src/game/00476320.c match func_00476C00 main:.text:00476C00:304,frontbin:.text:004764C0:304 100.00 func_004764B8 src/game/004764B8.c match func_00476D98 main:.text:00476D98:92,frontbin:.text:00476658:92 100.00 func_004765F8 src/pal/game/004765F8.c match func_004765F8 main:.text:004765F8:124 100.00 +func_00476678 src/pal/game/00476678.c match func_00476678 main:.text:00476678:348 100.00 func_00476C38 src/game/00476C38.c match func_00477558 main:.text:00477558:68,frontbin:.text:00476E18:68 100.00 +func_00476D30 src/pal/game/00476D30.c match func_00476D30 main:.text:00476D30:100 100.00 +func_00476DF8 src/pal/game/00476DF8.c match func_00476DF8 main:.text:00476DF8:132 100.00 func_00476E90 src/pal/game/00476E90.c match func_00476E90 main:.text:00476E90:52 100.00 func_00476ED0 src/pal/game/00476ED0.c match func_00476ED0 main:.text:00476ED0:52 100.00 func_00476F08 src/pal/game/00476F08.c match func_00476F08 main:.text:00476F08:52 100.00 @@ -1156,6 +1191,7 @@ func_004790C0 src/game/004790C0.c match func_004799F8 main:.text:004799F8:40,fro func_00479580 src/game/00479580.c match func_00479EB8 main:.text:00479EB8:44,frontbin:.text:00479778:44 100.00 func_004795C0 src/game/004795C0.c match func_00479EF8 main:.text:00479EF8:28,frontbin:.text:004797B8:28 100.00 func_004796C8 src/game/004796C8.c match func_0047A000 main:.text:0047A000:196,frontbin:.text:004798C0:196 100.00 +func_00479E28 src/pal/game/00479E28.c match func_00479E28 main:.text:00479E28:128 100.00 func_0047B9B8 src/game/0047B9B8.c match func_0047C2F0 main:.text:0047C2F0:108,frontbin:.text:0047BBB0:108 100.00 func_0047BC10 src/game/0047BC10.c match func_0047C548 main:.text:0047C548:40,frontbin:.text:0047BE08:40 100.00 func_0047BC38 src/game/0047BC38.c match func_0047C570 main:.text:0047C570:44,frontbin:.text:0047BE30:44 100.00 @@ -1193,6 +1229,7 @@ func_00483340 src/game/00483340.c match func_00483D08 main:.text:00483D08:40,fro func_00483368 src/game/00483368.c match func_00483D30 main:.text:00483D30:40,frontbin:.text:004835F0:40 100.00 func_00484598 src/game/00484598.c match func_00484F68 main:.text:00484F68:28,frontbin:.text:00484828:28 100.00 func_00484670 src/game/00484670.c match func_00485050 main:.text:00485050:156,frontbin:.text:00484910:156 100.00 +func_00484EB0 src/pal/game/00484EB0.c match func_00484EB0 main:.text:00484EB0:184 100.00 func_00486188 src/game/00486188.c match func_00486BC0 main:.text:00486BC0:96,frontbin:.text:00486480:96 100.00 func_004869D8 src/game/004869D8.c match func_00487440 main:.text:00487440:8,frontbin:.text:00486D00:8 100.00 func_00486D58 src/game/00486D58.c match func_00487810 main:.text:00487810:272,frontbin:.text:004870D0:272 100.00 @@ -1228,13 +1265,16 @@ func_0048A7E8 src/pal/game/0048A7E8.c match func_0048A7E8 main:.text:0048A7E8:76 func_0048A838 src/pal/game/0048A838.c match func_0048A838 main:.text:0048A838:84 100.00 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_0048AA58 src/pal/game/0048AA58.c match func_0048AA58 main:.text:0048AA58:188 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 func_0048B4B0 src/pal/game/0048B4B0.c match func_0048B4B0 main:.text:0048B4B0:52 100.00 func_0048B720 src/pal/game/0048B720.c match func_0048B720 main:.text:0048B720:88 100.00 func_0048B818 src/game/0048B818.c match func_0048C2D0 main:.text:0048C2D0:36,frontbin:.text:0048BB90:36 100.00 +func_0048C420 src/pal/game/0048C420.c match func_0048C420 main:.text:0048C420:228 100.00 func_0048D038 src/game/0048D038.c match func_0048DAF0 main:.text:0048DAF0:28,frontbin:.text:0048D3B0:28 100.00 func_0048DEB0 src/game/0048DEB0.c match func_0048E968 main:.text:0048E968:16,frontbin:.text:0048E228:16 100.00 func_0048EA78 src/game/0048EA78.c match func_0048F530 main:.text:0048F530:56,frontbin:.text:0048EDF0:56 100.00 @@ -1304,6 +1344,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 @@ -1354,6 +1395,7 @@ func_00498DB0 src/game/00498DB0.c match func_00499AE8 main:.text:00499AE8:24,fro func_00498DC8 src/game/00498DC8.c match func_00499B00 main:.text:00499B00:12,frontbin:.text:004993C0:12 100.00 func_00498DD8 src/game/00498DD8.c match func_00499B10 main:.text:00499B10:12,frontbin:.text:004993D0:12 100.00 func_00498FC8 src/game/00498FC8.c match func_00499D00 main:.text:00499D00:36,frontbin:.text:004995C0:36 100.00 +func_00499120 src/pal/game/00499120.c match func_00499120 main:.text:00499120:204 100.00 func_00499270 src/game/00499270.c match func_00499FA8 main:.text:00499FA8:36,frontbin:.text:00499868:36 100.00 func_004993A8 src/pal/game/004993A8.c match func_004993A8 main:.text:004993A8:112 100.00 func_004993D0 src/game/004993D0.c match func_0049A108 main:.text:0049A108:8,frontbin:.text:004999C8:8 100.00 @@ -1421,6 +1463,7 @@ func_0049E618 src/game/0049E618.c match func_0049F350 main:.text:0049F350:160,fr func_0049EF30 src/game/0049EF30.c match func_0049FC68 main:.text:0049FC68:176,frontbin:.text:0049F528:176 100.00 func_0049EFE0 src/game/0049EFE0.c match func_0049FD18 main:.text:0049FD18:44,frontbin:.text:0049F5D8:44 100.00 func_0049F010 src/game/0049F010.c match func_0049FD48 main:.text:0049FD48:44,frontbin:.text:0049F608:44 100.00 +func_0049F120 src/pal/game/0049F120.c match func_0049F120 main:.text:0049F120:144 100.00 func_0049F478 src/game/0049F478.c match func_004A01B0 main:.text:004A01B0:128,frontbin:.text:0049FA70:128 100.00 func_0049F9F0 src/game/0049F9F0.c match func_004A0728 main:.text:004A0728:72,frontbin:.text:0049FFE8:72 100.00 func_0049FA38 src/game/0049FA38.c match func_004A0770 main:.text:004A0770:164,frontbin:.text:004A0030:164 100.00 @@ -1492,6 +1535,7 @@ func_004A2C1C src/game/004A2C1C.c match func_004A3400 main:.text:004A3400:8,fron func_004A2D10 src/game/004A2D10.c match func_004A3A70 main:.text:004A3A70:40,frontbin:.text:004A3330:40 100.00 func_004A2D38 src/game/004A2D38.c match func_004A3A98 main:.text:004A3A98:8,frontbin:.text:004A3358:8 100.00 func_004A2D40 src/game/004A2D40.c match func_004A3AA0 main:.text:004A3AA0:76,frontbin:.text:004A3360:76 100.00 +func_004A2D58 src/pal/game/004A2D58.c match func_004A2D58 main:.text:004A2D58:168 100.00 func_004A2D90 src/game/004A2D90.c match func_004A3AF0 main:.text:004A3AF0:68,frontbin:.text:004A33B0:68 100.00 func_004A2DEC src/game/004A2DEC.c match func_004A3400 main:.text:004A3400:8,frontbin:.text:004A2CC0:8 100.00 func_004A2DF8 src/game/004A2DF8.c match func_004A3B58 main:.text:004A3B58:8,frontbin:.text:004A3418:8 100.00 @@ -1548,8 +1592,10 @@ 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_004A9288 src/pal/game/004A9288.c match func_004A9288 main:.text:004A9288:184 100.00 func_004A99A0 src/pal/game/004A99A0.c match func_004A99A0 main:.text:004A99A0:64 100.00 func_004A99E0 src/pal/game/004A99E0.c match func_004A99E0 main:.text:004A99E0:80 100.00 func_004A9C00 src/game/004A9C00.c match func_004AA978 main:.text:004AA978:28,frontbin:.text:004AA238:28 100.00 @@ -1557,6 +1603,7 @@ func_004A9C30 src/game/004A9C30.c match func_004AA9A8 main:.text:004AA9A8:92,fro func_004A9C90 src/game/004A9C90.c match func_004AAA08 main:.text:004AAA08:8,frontbin:.text:004AA2C8:8 100.00 func_004A9E50 src/game/004A9E50.c match func_004AABC8 main:.text:004AABC8:336,frontbin:.text:004AA488:336 100.00 func_004AA068 src/game/004AA068.c match func_004AADE0 main:.text:004AADE0:68,frontbin:.text:004AA6A0:68 100.00 +func_004AA638 src/pal/game/004AA638.c match func_004AA638 main:.text:004AA638:204 100.00 func_004AAA48 src/pal/game/004AAA48.c match func_004AAA48 main:.text:004AAA48:276 100.00 func_004AAC9C src/game/004AAC9C.c match func_004ABA44 main:.text:004ABA44:8,frontbin:.text:004AB304:8 100.00 func_004AACA4 src/game/004AACA4.c match func_004ABA4C main:.text:004ABA4C:8,frontbin:.text:004AB30C:8 100.00 @@ -1582,6 +1629,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 @@ -1607,10 +1655,12 @@ func_004AFE50 src/game/004AFE50.c match func_004B0CE0 main:.text:004B0CE0:92,fro func_004AFF38 src/game/004AFF38.c match func_004B0DC8 main:.text:004B0DC8:140,frontbin:.text:004B0688:140 100.00 func_004AFFC8 src/game/004AFFC8.c match func_004B0E58 main:.text:004B0E58:84,frontbin:.text:004B0718:84 100.00 func_004B0020 src/game/004B0020.c match func_004B0EB0 main:.text:004B0EB0:72,frontbin:.text:004B0770:72 100.00 +func_004B0028 src/pal/game/004B0028.c match func_004B0028 main:.text:004B0028:228 100.00 func_004B0068 src/game/004B0068.c match func_004B0EF8 main:.text:004B0EF8:100,frontbin:.text:004B07B8:100 100.00 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 @@ -1627,10 +1677,12 @@ func_004B2160 src/game/004B2160.c match func_004B2FF0 main:.text:004B2FF0:92,fro func_004B2260 src/game/004B2260.c match func_004B30F0 main:.text:004B30F0:60,frontbin:.text:004B29B0:60 100.00 func_004B22A0 src/game/004B22A0.c match func_004B3130 main:.text:004B3130:52,frontbin:.text:004B29F0:52 100.00 func_004B22D8 src/game/004B22D8.c match func_004B3168 main:.text:004B3168:108,frontbin:.text:004B2A28:108 100.00 +func_004B2508 src/pal/game/004B2508.c match func_004B2508 main:.text:004B2508:224 100.00 func_004B2BD8 src/game/004B2BD8.c match func_004B3AA0 main:.text:004B3AA0:76,frontbin:.text:004B3360:76 100.00 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,9 +1699,12 @@ 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_004B65E8 src/pal/game/004B65E8.c match func_004B65E8 main:.text:004B65E8:196 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 func_004B6990 src/game/004B6990.c match func_004B7880 main:.text:004B7880:28,frontbin:.text:004B7140:28 100.00 @@ -1698,6 +1753,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 @@ -1770,18 +1826,22 @@ func_004C21A0 src/game/004C21A0.c match func_004C2FC8 main:.text:004C2FC8:68,fro func_004C2EE0 src/game/004C2EE0.c match func_004C3D08 main:.text:004C3D08:68,frontbin:.text:004C35C8:68 100.00 func_004C2F28 src/game/004C2F28.c match func_004C3D50 main:.text:004C3D50:76,frontbin:.text:004C3610:76 100.00 func_004C2F78 src/game/004C2F78.c match func_004C3DA0 main:.text:004C3DA0:128,frontbin:.text:004C3660:128 100.00 +func_004C3380 src/pal/game/004C3380.c match func_004C3380 main:.text:004C3380:184 100.00 func_004C37A0 src/game/004C37A0.c match func_004C45C8 main:.text:004C45C8:128,frontbin:.text:004C3E88:128 100.00 func_004C3988 src/game/004C3988.c match func_004C47B0 main:.text:004C47B0:124,frontbin:.text:004C4070:124 100.00 func_004C3A08 src/game/004C3A08.c match func_004C4830 main:.text:004C4830:280,frontbin:.text:004C40F0:280 100.00 func_004C3B20 src/game/004C3B20.c match func_004C4948 main:.text:004C4948:104,frontbin:.text:004C4208:104 100.00 func_004C3C38 src/game/004C3C38.c match func_004C4A60 main:.text:004C4A60:160,frontbin:.text:004C4320:160 100.00 +func_004C3E20 src/pal/game/004C3E20.c match func_004C3E20 main:.text:004C3E20:192 100.00 func_004C3E48 src/game/004C3E48.c match func_004C4C70 main:.text:004C4C70:172,frontbin:.text:004C4530:172 100.00 func_004C3EE0 src/pal/game/004C3EE0.c match func_004C3EE0 main:.text:004C3EE0:132 100.00 func_004C4018 src/game/004C4018.c match func_004C4E40 main:.text:004C4E40:176,frontbin:.text:004C4700:176 100.00 +func_004C4078 src/pal/game/004C4078.c match func_004C4078 main:.text:004C4078:192 100.00 func_004C40C8 src/game/004C40C8.c match func_004C4EF0 main:.text:004C4EF0:300,frontbin:.text:004C47B0:300 100.00 func_004C41F8 src/game/004C41F8.c match func_004C5020 main:.text:004C5020:8,frontbin:.text:004C48E0:8 100.00 func_004C4490 src/game/004C4490.c match func_004C52B8 main:.text:004C52B8:36,frontbin:.text:004C4B78:36 100.00 func_004C44B8 src/game/004C44B8.c match func_004C52E0 main:.text:004C52E0:48,frontbin:.text:004C4BA0:48 100.00 +func_004C4648 src/pal/game/004C4648.c match func_004C4648 main:.text:004C4648:196 100.00 func_004C49B0 src/pal/game/004C49B0.c match func_004C49B0 main:.text:004C49B0:176 100.00 func_004C5570 src/game/004C5570.c match func_004C6398 main:.text:004C6398:28,frontbin:.text:004C5C58:28 100.00 func_004C5590 src/game/004C5590.c match func_004C63B8 main:.text:004C63B8:40,frontbin:.text:004C5C78:40 100.00 @@ -1803,6 +1863,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 @@ -1819,6 +1880,7 @@ func_004C9208 src/game/004C9208.c match func_004CA030 main:.text:004CA030:56,fro func_004C9240 src/game/004C9240.c match func_004CA068 main:.text:004CA068:124,frontbin:.text:004C9928:124 100.00 func_004C94C8 src/game/004C94C8.c match func_004CA2F0 main:.text:004CA2F0:28,frontbin:.text:004C9BB0:28 100.00 func_004C94F8 src/game/004C94F8.c match func_004CA320 main:.text:004CA320:336,frontbin:.text:004C9BE0:336 100.00 +func_004C9590 src/pal/game/004C9590.c match func_004C9590 main:.text:004C9590:200 100.00 func_004C9648 src/game/004C9648.c match func_004CA470 main:.text:004CA470:40,frontbin:.text:004C9D30:40 100.00 func_004C9670 src/game/004C9670.c match func_004CA498 main:.text:004CA498:100,frontbin:.text:004C9D58:100 100.00 func_004C96D8 src/game/004C96D8.c match func_004CA500 main:.text:004CA500:40,frontbin:.text:004C9DC0:40 100.00 @@ -1845,6 +1907,7 @@ func_004CB620 src/game/004CB620.c match func_004CC4C0 main:.text:004CC4C0:336,fr func_004CB6B0 src/pal/game/004CB6B0.c match func_004CB6B0 main:.text:004CB6B0:56 100.00 func_004CB770 src/game/004CB770.c match func_004CC610 main:.text:004CC610:40,frontbin:.text:004CBED0:40 100.00 func_004CB798 src/game/004CB798.c match func_004CC638 main:.text:004CC638:112,frontbin:.text:004CBEF8:112 100.00 +func_004CB7E0 src/pal/game/004CB7E0.c match func_004CB7E0 main:.text:004CB7E0:260 100.00 func_004CB808 src/game/004CB808.c match func_004CC6A8 main:.text:004CC6A8:64,frontbin:.text:004CBF68:64 100.00 func_004CBD68 src/pal/game/004CBD68.c match func_004CBD68 main:.text:004CBD68:100 100.00 func_004CBEF8 src/game/004CBEF8.c match func_004CCD98 main:.text:004CCD98:184,frontbin:.text:004CC658:184 100.00 @@ -1859,6 +1922,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 +1933,8 @@ 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_004CDB70 src/pal/game/004CDB70.c match func_004CDB70 main:.text:004CDB70: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 @@ -1897,6 +1963,7 @@ func_004CF3E8 src/game/004CF3E8.c match func_004D0288 main:.text:004D0288:56,fro func_004CF6C0 src/game/004CF6C0.c match func_004D0560 main:.text:004D0560:20,frontbin:.text:004CFE20:20 100.00 func_004CF6D8 src/game/004CF6D8.c match func_004D0578 main:.text:004D0578:160,frontbin:.text:004CFE38:160 100.00 func_004CF910 src/game/004CF910.c match func_004D07B0 main:.text:004D07B0:64,frontbin:.text:004D0070:64 100.00 +func_004CFA08 src/pal/game/004CFA08.c match func_004CFA08 main:.text:004CFA08:232 100.00 func_004CFAC8 src/game/004CFAC8.c match func_004D0968 main:.text:004D0968:12,frontbin:.text:004D0228:12 100.00 func_004CFD10 src/pal/game/004CFD10.c match func_004CFD10 main:.text:004CFD10:136 100.00 func_004CFD50 src/game/004CFD50.c match func_004D0BF0 main:.text:004D0BF0:48,frontbin:.text:004D04B0:48 100.00 @@ -1909,6 +1976,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 @@ -1930,6 +1998,7 @@ func_004D14F0 src/game/004D14F0.c match func_004D2400 main:.text:004D2400:336,fr func_004D1640 src/game/004D1640.c match func_004D2550 main:.text:004D2550:40,frontbin:.text:004D1E10:40 100.00 func_004D1668 src/game/004D1668.c match func_004D2578 main:.text:004D2578:104,frontbin:.text:004D1E38:104 100.00 func_004D16D0 src/game/004D16D0.c match func_004D25E0 main:.text:004D25E0:56,frontbin:.text:004D1EA0:56 100.00 +func_004D1750 src/pal/game/004D1750.c match func_004D1750 main:.text:004D1750:200 100.00 func_004D1960 src/game/004D1960.c match func_004D2870 main:.text:004D2870:184,frontbin:.text:004D2130:184 100.00 func_004D19E8 src/pal/game/004D19E8.c match func_004D19E8 main:.text:004D19E8:136 100.00 func_004D1B00 src/game/004D1B00.c match func_004D2A10 main:.text:004D2A10:192,frontbin:.text:004D22D0:192 100.00 @@ -1953,6 +2022,7 @@ func_004D2B00 src/game/004D2B00.c match func_004D3A10 main:.text:004D3A10:60,fro func_004D2B40 src/game/004D2B40.c match func_004D3A50 main:.text:004D3A50:60,frontbin:.text:004D3310:60 100.00 func_004D2B80 src/game/004D2B80.c match func_004D3A90 main:.text:004D3A90:60,frontbin:.text:004D3350:60 100.00 func_004D2C08 src/pal/game/004D2C08.c match func_004D2C08 main:.text:004D2C08:136 100.00 +func_004D2CB0 src/pal/game/004D2CB0.c match func_004D2CB0 main:.text:004D2CB0:152 100.00 func_004D2FF8 src/game/004D2FF8.c match func_004D3F08 main:.text:004D3F08:28,frontbin:.text:004D37C8:28 100.00 func_004D3030 src/game/004D3030.c match func_004D3F40 main:.text:004D3F40:8,frontbin:.text:004D3800:8 100.00 func_004D31A0 src/game/004D31A0.c match func_004D40B0 main:.text:004D40B0:76,frontbin:.text:004D3970:76 100.00 @@ -1970,11 +2040,16 @@ func_004D3AE0 src/game/004D3AE0.c match func_004D49F0 main:.text:004D49F0:148,fr func_004D3C68 src/game/004D3C68.c match func_004D4B78 main:.text:004D4B78:148,frontbin:.text:004D4438:148 100.00 func_004D3DC0 src/game/004D3DC0.c match func_004D4CD0 main:.text:004D4CD0:104,frontbin:.text:004D4590:104 100.00 func_004D3EF0 src/game/004D3EF0.c match func_004D4E00 main:.text:004D4E00:8,frontbin:.text:004D46C0:8 100.00 +func_004D4058 src/pal/game/004D4058.c match func_004D4058 main:.text:004D4058:88 100.00 func_004D4710 src/game/004D4710.c match func_004D5628 main:.text:004D5628:92,frontbin:.text:004D4EE8:92 100.00 func_004D4770 src/game/004D4770.c match func_004D5688 main:.text:004D5688:40,frontbin:.text:004D4F48:40 100.00 +func_004D48B8 src/pal/game/004D48B8.c match func_004D48B8 main:.text:004D48B8:156 100.00 func_004D4928 src/game/004D4928.c match func_004D5840 main:.text:004D5840:128,frontbin:.text:004D5100:128 100.00 func_004D49A8 src/game/004D49A8.c match func_004D58C0 main:.text:004D58C0:512,frontbin:.text:004D5180:512 100.00 +func_004D4A88 src/pal/game/004D4A88.c match func_004D4A88 main:.text:004D4A88:240 100.00 func_004D4BA8 src/game/004D4BA8.c match func_004D5AC0 main:.text:004D5AC0:172,frontbin:.text:004D5380:172 100.00 +func_004D4C10 src/pal/game/004D4C10.c match func_004D4C10 main:.text:004D4C10:192 100.00 +func_004D4D38 src/pal/game/004D4D38.c match func_004D4D38 main:.text:004D4D38:200 100.00 func_004D5608 src/game/004D5608.c match func_004D6520 main:.text:004D6520:108,frontbin:.text:004D5DE0:108 100.00 func_004D5878 src/game/004D5878.c match func_004D6790 main:.text:004D6790:28,frontbin:.text:004D6050:28 100.00 func_004D5898 src/game/004D5898.c match func_004D67B0 main:.text:004D67B0:56,frontbin:.text:004D6070:56 100.00 @@ -1991,11 +2066,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 @@ -2045,6 +2122,7 @@ func_004D97A8 src/game/004D97A8.c match func_004DA6C0 main:.text:004DA6C0:56,fro func_004D97E0 src/game/004D97E0.c match func_004DA6F8 main:.text:004DA6F8:188,frontbin:.text:004D9FB8:188 100.00 func_004D98A0 src/game/004D98A0.c match func_004DA7B8 main:.text:004DA7B8:88,frontbin:.text:004DA078:88 100.00 func_004D98F8 src/game/004D98F8.c match func_004DA810 main:.text:004DA810:192,frontbin:.text:004DA0D0:192 100.00 +func_004D9930 src/pal/game/004D9930.c match func_004D9930 main:.text:004D9930:212 100.00 func_004D9B20 src/game/004D9B20.c match func_004DAA38 main:.text:004DAA38:168,frontbin:.text:004DA2F8:168 100.00 func_004D9BC8 src/game/004D9BC8.c match func_004DAAE0 main:.text:004DAAE0:40,frontbin:.text:004DA3A0:40 100.00 func_004D9CD8 src/game/004D9CD8.c match func_004DABF0 main:.text:004DABF0:88,frontbin:.text:004DA4B0:88 100.00 @@ -2064,6 +2142,7 @@ func_004DBA98 src/game/004DBA98.c match func_004DC998 main:.text:004DC998:92,fro func_004DBAF8 src/game/004DBAF8.c match func_004DC9F8 main:.text:004DC9F8:40,frontbin:.text:004DC2B8:40 100.00 func_004DBB20 src/game/004DBB20.c match func_004DCA20 main:.text:004DCA20:104,frontbin:.text:004DC2E0:104 100.00 func_004DBB88 src/game/004DBB88.c match func_004DCA88 main:.text:004DCA88:64,frontbin:.text:004DC348:64 100.00 +func_004DBC50 src/pal/game/004DBC50.c match func_004DBC50 main:.text:004DBC50:168 100.00 func_004DBC90 src/game/004DBC90.c match func_004DCB90 main:.text:004DCB90:84,frontbin:.text:004DC450:84 100.00 func_004DBE78 src/game/004DBE78.c match func_004DCD78 main:.text:004DCD78:28,frontbin:.text:004DC638:28 100.00 func_004DBE98 src/game/004DBE98.c match func_004DCD98 main:.text:004DCD98:40,frontbin:.text:004DC658:40 100.00 @@ -2076,6 +2155,7 @@ func_004DCB80 src/game/004DCB80.c match func_004DDAE0 main:.text:004DDAE0:28,fro func_004DCBA8 src/game/004DCBA8.c match func_004DDB08 main:.text:004DDB08:140,frontbin:.text:004DD3C8:140 100.00 func_004DCC38 src/game/004DCC38.c match func_004DDB98 main:.text:004DDB98:100,frontbin:.text:004DD458:100 100.00 func_004DF098 src/game/004DF098.c match func_004DFFF8 main:.text:004DFFF8:92,frontbin:.text:004DF8B8:92 100.00 +func_004DFED8 src/pal/game/004DFED8.c match func_004DFED8 main:.text:004DFED8:280 100.00 func_004DFF1C src/game/004DFF1C.c match func_004D42A0 main:.text:004D42A0:8,frontbin:.text:004D3B60:8 100.00 func_004DFF28 src/game/004DFF28.c match func_004E0E88 main:.text:004E0E88:120,frontbin:.text:004E0748:120 100.00 func_004E04E0 src/game/004E04E0.c match func_004E1440 main:.text:004E1440:340,frontbin:.text:004E0D00:340 100.00 @@ -2098,8 +2178,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,11 +2199,16 @@ 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_004E87F8 src/pal/game/004E87F8.c match func_004E87F8 main:.text:004E87F8:164 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_004E8BD8 src/pal/game/004E8BD8.c match func_004E8BD8 main:.text:004E8BD8:224 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 +func_004EB520 src/pal/game/004EB520.c match func_004EB520 main:.text:004EB520:100 100.00 func_004EB588 src/pal/game/004EB588.c match func_004EB588 main:.text:004EB588:104 100.00 func_004EBAB0 src/pal/game/004EBAB0.c match func_004EBAB0 main:.text:004EBAB0:68 100.00 +func_004EBDD8 src/pal/game/004EBDD8.c match func_004EBDD8 main:.text:004EBDD8:204 100.00 func_004EBEA8 src/pal/game/004EBEA8.c match func_004EBEA8 main:.text:004EBEA8:96 100.00 func_004ED7B8 src/game/004ED7B8.c match func_004EE7F0 main:.text:004EE7F0:8,frontbin:.text:004EE0F0:8 100.00 func_004EDE40 src/game/004EDE40.c match func_004EEE78 main:.text:004EEE78:92,frontbin:.text:004EE778:92 100.00 @@ -2153,6 +2240,7 @@ func_004EF830 src/game/004EF830.c match func_004F0898 main:.text:004F0898:68,fro func_004EF948 src/game/004EF948.c match func_004F09B0 main:.text:004F09B0:192,frontbin:.text:004F02B0:192 100.00 func_004EFA60 src/game/004EFA60.c match func_004F0AC8 main:.text:004F0AC8:8,frontbin:.text:004F03C8:8 100.00 func_004EFA68 src/game/004EFA68.c match func_004F0AD0 main:.text:004F0AD0:100,frontbin:.text:004F03D0:100 100.00 +func_004EFAD0 src/pal/game/004EFAD0.c match func_004EFAD0 main:.text:004EFAD0:60 100.00 func_004EFD08 src/game/004EFD08.c match func_004F0D70 main:.text:004F0D70:124,frontbin:.text:004F0670:124 100.00 func_004EFD88 src/game/004EFD88.c match func_004F0DF0 main:.text:004F0DF0:156,frontbin:.text:004F06F0:156 100.00 func_004EFE28 src/game/004EFE28.c match func_004F0E90 main:.text:004F0E90:388,frontbin:.text:004F0790:388 100.00 @@ -2161,6 +2249,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 @@ -2169,6 +2258,7 @@ func_004F0A08 src/game/004F0A08.c match func_004F1A70 main:.text:004F1A70:64,fro func_004F0A48 src/game/004F0A48.c match func_004F1AB0 main:.text:004F1AB0:36,frontbin:.text:004F13B0:36 100.00 func_004F0A70 src/game/004F0A70.c match func_004F1AD8 main:.text:004F1AD8:20,frontbin:.text:004F13D8:20 100.00 func_004F0A88 src/game/004F0A88.c match func_004F1AF0 main:.text:004F1AF0:40,frontbin:.text:004F13F0:40 100.00 +func_004F0B38 src/pal/game/004F0B38.c match func_004F0B38 main:.text:004F0B38:192 100.00 func_004F0BDC src/game/004F0BDC.c match func_004F3580 main:.text:004F3580:8,frontbin:.text:004F2E80:8 100.00 func_004F0BE8 src/game/004F0BE8.c match func_004F1C50 main:.text:004F1C50:108,frontbin:.text:004F1550:108 100.00 func_004F0C58 src/game/004F0C58.c match func_004F1CC0 main:.text:004F1CC0:108,frontbin:.text:004F15C0:108 100.00 @@ -2185,6 +2275,7 @@ func_004F1848 src/game/004F1848.c match func_004F28B0 main:.text:004F28B0:264,fr func_004F1950 src/game/004F1950.c match func_004F29B8 main:.text:004F29B8:404,frontbin:.text:004F22B8:404 100.00 func_004F1AE8 src/game/004F1AE8.c match func_004F2B50 main:.text:004F2B50:256,frontbin:.text:004F2450:256 100.00 func_004F1BF0 src/game/004F1BF0.c match func_004F2C58 main:.text:004F2C58:32,frontbin:.text:004F2558:32 100.00 +func_004F1C08 src/pal/game/004F1C08.c match func_004F1C08 main:.text:004F1C08:68 100.00 func_004F1C10 src/game/004F1C10.c match func_004F2C78 main:.text:004F2C78:28,frontbin:.text:004F2578:28 100.00 func_004F1C30 src/game/004F1C30.c match func_004F2C98 main:.text:004F2C98:28,frontbin:.text:004F2598:28 100.00 func_004F1C50 src/game/004F1C50.c match func_004F2CB8 main:.text:004F2CB8:8,frontbin:.text:004F25B8:8 100.00 @@ -2350,10 +2441,12 @@ 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 func_00501DF8 src/game/00501DF8.c match func_00502E68 main:.text:00502E68:36,frontbin:.text:00502768:36 100.00 +func_00501F70 src/pal/game/00501F70.c match func_00501F70 main:.text:00501F70:112 100.00 func_00502150 src/pal/game/00502150.c match func_00502150 main:.text:00502150:180 100.00 func_00502230 src/pal/game/00502230.c match func_00502230 main:.text:00502230:52 100.00 func_00502410 src/game/00502410.c match func_00503480 main:.text:00503480:48,frontbin:.text:00502D80:48 100.00 @@ -2369,6 +2462,8 @@ func_00502848 src/game/00502848.c match func_005038B8 main:.text:005038B8:120,fr func_005028C0 src/game/005028C0.c match func_00503930 main:.text:00503930:112,frontbin:.text:00503230:112 100.00 func_00502940 src/pal/game/00502940.c match func_00502940 main:.text:00502940:108 100.00 func_00502BB8 src/pal/game/00502BB8.c match func_00502BB8 main:.text:00502BB8:88 100.00 +func_00502D28 src/pal/game/00502D28.c match func_00502D28 main:.text:00502D28:180 100.00 +func_005037A8 src/pal/game/005037A8.c match func_005037A8 main:.text:005037A8:152 100.00 func_00503AE8 src/game/00503AE8.c match func_00504B80 main:.text:00504B80:112,frontbin:.text:00504480:112 100.00 func_00503B58 src/game/00503B58.c match func_00504BF0 main:.text:00504BF0:20,frontbin:.text:005044F0:20 100.00 func_00503B70 src/game/00503B70.c match func_00504C08 main:.text:00504C08:20,frontbin:.text:00504508:20 100.00 @@ -2379,18 +2474,53 @@ 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_00504C20 src/pal/game/00504C20.c match func_00504C20 main:.text:00504C20:164 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_00504F78 src/pal/game/00504F78.c match func_00504F78 main:.text:00504F78:200 100.00 +func_005052D0 src/pal/game/005052D0.c match func_005052D0 main:.text:005052D0:244 100.00 +func_005053D0 src/pal/game/005053D0.c match func_005053D0 main:.text:005053D0:184 100.00 +func_00505488 src/pal/game/00505488.c match func_00505488 main:.text:00505488:184 100.00 +func_00505540 src/pal/game/00505540.c match func_00505540 main:.text:00505540:168 100.00 +func_005055E8 src/pal/game/005055E8.c match func_005055E8 main:.text:005055E8:244 100.00 +func_005056E0 src/pal/game/005056E0.c match func_005056E0 main:.text:005056E0:244 100.00 +func_005057D8 src/pal/game/005057D8.c match func_005057D8 main:.text:005057D8:244 100.00 +func_00505950 src/pal/game/00505950.c match func_00505950 main:.text:00505950:244 100.00 +func_00505A50 src/pal/game/00505A50.c match func_00505A50 main:.text:00505A50:228 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_00505F00 src/pal/game/00505F00.c match func_00505F00 main:.text:00505F00:244 100.00 +func_00506000 src/pal/game/00506000.c match func_00506000 main:.text:00506000:212 100.00 +func_005060D8 src/pal/game/005060D8.c match func_005060D8 main:.text:005060D8:212 100.00 +func_005062D0 src/pal/game/005062D0.c match func_005062D0 main:.text:005062D0:228 100.00 +func_005063C0 src/pal/game/005063C0.c match func_005063C0 main:.text:005063C0:228 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_00506678 src/pal/game/00506678.c match func_00506678 main:.text:00506678:228 100.00 func_00506860 src/game/00506860.c match func_005078F8 main:.text:005078F8:208,frontbin:.text:005071F8:208 100.00 +func_00506878 src/pal/game/00506878.c match func_00506878 main:.text:00506878:244 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_00507030 src/pal/game/00507030.c match func_00507030 main:.text:00507030:200 100.00 +func_005070F8 src/pal/game/005070F8.c match func_005070F8 main:.text:005070F8:188 100.00 +func_005071B8 src/pal/game/005071B8.c match func_005071B8 main:.text:005071B8:184 100.00 +func_005073F0 src/pal/game/005073F0.c match func_005073F0 main:.text:005073F0:172 100.00 +func_005074A0 src/pal/game/005074A0.c match func_005074A0 main:.text:005074A0:236 100.00 +func_005075A0 src/pal/game/005075A0.c match func_005075A0 main:.text:005075A0:200 100.00 +func_00507690 src/pal/game/00507690.c match func_00507690 main:.text:00507690:200 100.00 +func_00507758 src/pal/game/00507758.c match func_00507758 main:.text:00507758:200 100.00 +func_00507828 src/pal/game/00507828.c match func_00507828 main:.text:00507828:208 100.00 func_00507958 src/game/00507958.c match func_005089F0 main:.text:005089F0:68,frontbin:.text:005082F0:68 100.00 +func_00507C40 src/pal/game/00507C40.c match func_00507C40 main:.text:00507C40:144 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 func_00508578 src/game/00508578.c match func_00509610 main:.text:00509610:100,frontbin:.text:00508F10:100 100.00 @@ -2436,11 +2566,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 @@ -2454,16 +2587,20 @@ func_00509F28 src/game/00509F28.c match func_0050AFC0 main:.text:0050AFC0:88,fro func_00509F80 src/game/00509F80.c match func_0050B018 main:.text:0050B018:100,frontbin:.text:0050A918:100 100.00 func_00509FE8 src/game/00509FE8.c match func_0050B080 main:.text:0050B080:104,frontbin:.text:0050A980:104 100.00 func_0050A050 src/game/0050A050.c match func_0050B0E8 main:.text:0050B0E8:100,frontbin:.text:0050A9E8:100 100.00 +func_0050A060 src/pal/game/0050A060.c match func_0050A060 main:.text:0050A060:192 100.00 func_0050A0B8 src/game/0050A0B8.c match func_0050B150 main:.text:0050B150:104,frontbin:.text:0050AA50:104 100.00 func_0050A120 src/game/0050A120.c match func_0050B1B8 main:.text:0050B1B8:92,frontbin:.text:0050AAB8:92 100.00 func_0050A180 src/game/0050A180.c match func_0050B218 main:.text:0050B218:112,frontbin:.text:0050AB18:112 100.00 +func_0050A1D8 src/pal/game/0050A1D8.c match func_0050A1D8 main:.text:0050A1D8:232 100.00 func_0050A1F0 src/game/0050A1F0.c match func_0050B288 main:.text:0050B288:104,frontbin:.text:0050AB88:104 100.00 func_0050A258 src/game/0050A258.c match func_0050B2F0 main:.text:0050B2F0:104,frontbin:.text:0050ABF0:104 100.00 func_0050A2C0 src/game/0050A2C0.c match func_0050B358 main:.text:0050B358:120,frontbin:.text:0050AC58:120 100.00 func_0050A338 src/game/0050A338.c match func_0050B3D0 main:.text:0050B3D0:100,frontbin:.text:0050ACD0:100 100.00 func_0050A3A0 src/game/0050A3A0.c match func_0050B438 main:.text:0050B438:80,frontbin:.text:0050AD38:80 100.00 +func_0050A3D0 src/pal/game/0050A3D0.c match func_0050A3D0 main:.text:0050A3D0:216 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 +2634,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 +2658,9 @@ 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_0050C758 src/pal/game/0050C758.c match func_0050C758 main:.text:0050C758:232 100.00 +func_0050C980 src/pal/game/0050C980.c match func_0050C980 main:.text:0050C980:192 100.00 +func_0050CAE8 src/pal/game/0050CAE8.c match func_0050CAE8 main:.text:0050CAE8: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 @@ -2546,6 +2687,7 @@ func_0050EA00 src/game/0050EA00.c match func_0050FA98 main:.text:0050FA98:72,fro func_0050EA48 src/game/0050EA48.c match func_0050FAE0 main:.text:0050FAE0:48,frontbin:.text:0050F3E0:48 100.00 func_0050EA78 src/game/0050EA78.c match func_0050FB10 main:.text:0050FB10:8,frontbin:.text:0050F410:8 100.00 func_0050EA80 src/game/0050EA80.c match func_0050FB18 main:.text:0050FB18:124,frontbin:.text:0050F418:124 100.00 +func_0050EC18 src/pal/game/0050EC18.c match func_0050EC18 main:.text:0050EC18:252 100.00 func_0050EDC8 src/game/0050EDC8.c match func_0050FE60 main:.text:0050FE60:96,frontbin:.text:0050F760:96 100.00 func_0050EE28 src/game/0050EE28.c match func_0050FEC0 main:.text:0050FEC0:20,frontbin:.text:0050F7C0:20 100.00 func_0050EE40 src/game/0050EE40.c match func_0050FED8 main:.text:0050FED8:36,frontbin:.text:0050F7D8:36 100.00 @@ -2561,6 +2703,7 @@ func_0050F018 src/game/0050F018.c match func_005100F0 main:.text:005100F0:20,fro func_0050F348 src/pal/game/0050F348.c match func_0050F348 main:.text:0050F348:172 100.00 func_0050F488 src/pal/game/0050F488.c match func_0050F488 main:.text:0050F488:44 100.00 func_0050F4EC src/game/0050F4EC.c match func_005105C4 main:.text:005105C4:104,frontbin:.text:0050FEC4:104 100.00 +func_0050FD80 src/pal/game/0050FD80.c match func_0050FD80 main:.text:0050FD80:156 100.00 func_0050FE20 src/pal/game/0050FE20.c match func_0050FE20 main:.text:0050FE20:64 100.00 func_0050FF50 src/pal/game/0050FF50.c match func_0050FF50 main:.text:0050FF50:60 100.00 func_0050FF90 src/pal/game/0050FF90.c match func_0050FF90 main:.text:0050FF90:28 100.00 @@ -2597,7 +2740,10 @@ func_00511370 src/game/00511370.c match func_00512448 main:.text:00512448:8,fron func_00511378 src/game/00511378.c match func_00512450 main:.text:00512450:8,frontbin:.text:00511D50:8 100.00 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_00511530 src/pal/game/00511530.c match func_00511530 main:.text:00511530:208 100.00 +func_00511BA0 src/pal/game/00511BA0.c match func_00511BA0 main:.text:00511BA0:104 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 @@ -2630,12 +2776,14 @@ func_005239C8 src/game/005239C8.c match func_00524BC0 main:.text:00524BC0:312,fr func_00523B98 src/pal/game/00523B98.c match func_00523B98 main:.text:00523B98:64 100.00 func_00523BD8 src/pal/game/00523BD8.c match func_00523BD8 main:.text:00523BD8:80 100.00 func_00523E68 src/pal/game/00523E68.c match func_00523E68 main:.text:00523E68:140 100.00 +func_00524408 src/pal/game/00524408.c match func_00524408 main:.text:00524408:172 100.00 func_00524BE4 src/game/00524BE4.c match func_00525DDC main:.text:00525DDC:12,frontbin:.text:005256DC:12 100.00 func_0052515C src/game/0052515C.c match func_00526354 main:.text:00526354:8,frontbin:.text:00525C54:8 100.00 func_00525164 src/game/00525164.c match func_0052635C main:.text:0052635C:8,frontbin:.text:00525C5C:8 100.00 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 +2806,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 @@ -2672,6 +2821,7 @@ func_00540770 src/game/00540770.c match func_00541B70 main:.text:00541B70:104,fr func_005407D8 src/game/005407D8.c match func_00541BD8 main:.text:00541BD8:124,frontbin:.text:005414D8:124 100.00 func_00540958 src/pal/game/00540958.c match func_00540958 main:.text:00540958:64 100.00 func_00540AD8 src/game/00540AD8.c match func_00541ED8 main:.text:00541ED8:8,frontbin:.text:005417D8:8 100.00 +func_00541A50 src/pal/game/00541A50.c match func_00541A50 main:.text:00541A50:176 100.00 func_00541B38 src/game/00541B38.c match func_00543080 main:.text:00543080:48,frontbin:.text:00542980:48 100.00 func_005420D0 src/game/005420D0.c match func_00543618 main:.text:00543618:152,frontbin:.text:00542F18:152 100.00 func_005448E0 src/pal/game/005448E0.c match func_005448E0 main:.text:005448E0:68 100.00 @@ -2728,15 +2878,21 @@ func_0054AB78 src/game/0054AB78.c match func_0054C0E0 main:.text:0054C0E0:32,fro func_0054AB98 src/game/0054AB98.c match func_0054C100 main:.text:0054C100:80,frontbin:.text:0054BA00:80 100.00 func_0054ABE8 src/game/0054ABE8.c match func_0054C150 main:.text:0054C150:52,frontbin:.text:0054BA50:52 100.00 func_0054AC20 src/game/0054AC20.c match func_0054C188 main:.text:0054C188:52,frontbin:.text:0054BA88:52 100.00 +func_0054AFA0 src/pal/game/0054AFA0.c match func_0054AFA0 main:.text:0054AFA0:176 100.00 func_0054AFB8 src/game/0054AFB8.c match func_0054C520 main:.text:0054C520:68,frontbin:.text:0054BE20:68 100.00 func_0054B0E8 src/game/0054B0E8.c differs - - 0.00 func_0054B120 src/pal/game/0054B120.c match func_0054B120 main:.text:0054B120:32 100.00 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_0054B6F8 src/pal/game/0054B6F8.c match func_0054B6F8 main:.text:0054B6F8:204 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_0054C330 src/pal/game/0054C330.c match func_0054C330 main:.text:0054C330:208 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_0054E3E8 src/pal/game/0054E3E8.c match func_0054E3E8 main:.text:0054E3E8:104 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 @@ -4093,16 +4249,31 @@ func_L00_006A34B8 src/overlays/shared/L00_006A34B8.c match func_L00_006A6C98 lev func_L00_006A3520 src/overlays/shared/L00_006A3520.c match func_L00_006A6D00 level_00:.text:006A6D00:120 100.00 func_L00_006A3598 src/overlays/shared/L00_006A3598.c match func_L00_006A6D78 level_00:.text:006A6D78:100 100.00 func_L00_006A3600 src/overlays/shared/L00_006A3600.c match func_L00_006A6DE0 level_00:.text:006A6DE0:80 100.00 +func_L00_006A3670 src/pal/overlays/shared/L00_006A3670.c match func_L00_006A3670 level_00:.text:006A3670:112 100.00 +func_L00_006A36E0 src/pal/overlays/shared/L00_006A36E0.c match func_L00_006A36E0 level_00:.text:006A36E0:112 100.00 func_L00_006A3790 src/overlays/shared/L00_006A3790.c match func_L00_006A6F70 level_00:.text:006A6F70:100 100.00 +func_L00_006A37D0 src/pal/overlays/shared/L00_006A37D0.c match func_L00_006A37D0 level_00:.text:006A37D0:112 100.00 func_L00_006A37F8 src/overlays/shared/L00_006A37F8.c match func_L00_006A6FD8 level_00:.text:006A6FD8:104 100.00 func_L00_006A3860 src/overlays/shared/L00_006A3860.c match func_L00_006A7040 level_00:.text:006A7040:100 100.00 +func_L00_006A38C0 src/pal/overlays/shared/L00_006A38C0.c match func_L00_006A38C0 level_00:.text:006A38C0:112 100.00 func_L00_006A38C8 src/overlays/shared/L00_006A38C8.c match func_L00_006A70A8 level_00:.text:006A70A8:104 100.00 +func_L00_006A3930 src/pal/overlays/shared/L00_006A3930.c match func_L00_006A3930 level_00:.text:006A3930:112 100.00 func_L00_006A3990 src/overlays/shared/L00_006A3990.c match func_L00_006A7170 level_00:.text:006A7170:112 100.00 +func_L00_006A39A0 src/pal/overlays/shared/L00_006A39A0.c match func_L00_006A39A0 level_00:.text:006A39A0:112 100.00 func_L00_006A3A00 src/overlays/shared/L00_006A3A00.c match func_L00_006A71E0 level_00:.text:006A71E0:104 100.00 +func_L00_006A3A10 src/pal/overlays/shared/L00_006A3A10.c match func_L00_006A3A10 level_00:.text:006A3A10:112 100.00 func_L00_006A3A68 src/overlays/shared/L00_006A3A68.c match func_L00_006A7248 level_00:.text:006A7248:104 100.00 +func_L00_006A3A80 src/pal/overlays/shared/L00_006A3A80.c match func_L00_006A3A80 level_00:.text:006A3A80:112 100.00 func_L00_006A3AD0 src/overlays/shared/L00_006A3AD0.c match func_L00_006A72B0 level_00:.text:006A72B0:120 100.00 +func_L00_006A3AF0 src/pal/overlays/shared/L00_006A3AF0.c match func_L00_006A3AF0 level_00:.text:006A3AF0:112 100.00 func_L00_006A3B48 src/overlays/shared/L00_006A3B48.c match func_L00_006A7328 level_00:.text:006A7328:100 100.00 +func_L00_006A3B60 src/pal/overlays/shared/L00_006A3B60.c match func_L00_006A3B60 level_00:.text:006A3B60:112 100.00 +func_L00_006A3BD0 src/pal/overlays/shared/L00_006A3BD0.c match func_L00_006A3BD0 level_00:.text:006A3BD0:112 100.00 +func_L00_006A3CC0 src/pal/overlays/shared/L00_006A3CC0.c match func_L00_006A3CC0 level_00:.text:006A3CC0:112 100.00 func_L00_006A3CF0 src/overlays/shared/L00_006A3CF0.c match func_L00_006A74D0 level_00:.text:006A74D0:84 100.00 +func_L00_006A3D30 src/pal/overlays/shared/L00_006A3D30.c match func_L00_006A3D30 level_00:.text:006A3D30:112 100.00 +func_L00_006A3DA0 src/pal/overlays/shared/L00_006A3DA0.c match func_L00_006A3DA0 level_00:.text:006A3DA0:112 100.00 +func_L00_006A3E10 src/pal/overlays/shared/L00_006A3E10.c match func_L00_006A3E10 level_00:.text:006A3E10:112 100.00 func_L00_006A4000 src/overlays/shared/L00_006A4000.c match func_L00_006A77E0 level_00:.text:006A77E0:112 100.00 func_L00_006A4070 src/overlays/shared/L00_006A4070.c match func_L00_006A7850 level_00:.text:006A7850:104 100.00 func_L00_006A40D8 src/overlays/shared/L00_006A40D8.c match func_L00_006A78B8 level_00:.text:006A78B8:104 100.00 diff --git a/config/us/map.tsv b/config/us/map.tsv index 52007369e..c69e2a505 100644 --- a/config/us/map.tsv +++ b/config/us/map.tsv @@ -21,9 +21,11 @@ func_0011C3E8 src/core/0011C3E8.c match func_0011C3E8 main:core.text:0011C3E8:29 func_0011C510 src/core/0011C510.c match func_0011C510 main:core.text:0011C510:88 100.00 func_0011C5E0 src/core/0011C5E0.c match func_0011C5E0 main:core.text:0011C5E0:220 100.00 func_0011C6C0 src/core/0011C6C0.c match func_0011C6C0 main:core.text:0011C6C0:140 100.00 +func_0011C750 src/pal/core/0011C750.c other - - 0.00 func_0011C840 src/core/0011C840.c match func_0011C840 main:core.text:0011C840:220 100.00 func_0011C920 src/core/0011C920.c match func_0011C920 main:core.text:0011C920:44 100.00 func_0011C950 src/core/0011C950.c match func_0011C950 main:core.text:0011C950:32 100.00 +func_0011C978 src/pal/core/0011C978.c other - - 0.00 func_0011C9C0 src/core/0011C9C0.c match func_0011C9C0 main:core.text:0011C9C0:48 100.00 func_0011C9F0 src/core/0011C9F0.c match func_0011C9F0 main:core.text:0011C9F0:276 100.00 func_0011CB08 src/core/0011CB08.c match func_0011CB08 main:core.text:0011CB08:1036 100.00 @@ -863,6 +865,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 +895,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 @@ -908,12 +912,15 @@ func_00446988 src/game/00446988.c match func_00446988 main:.text:00446988:96 100 func_00446A50 src/game/00446A50.c match func_00446A50 main:.text:00446A50:32 100.00 func_00446C70 src/game/00446C70.c match func_00446C70 main:.text:00446C70:8 100.00 func_00447938 src/game/00447938.c match func_00447938 main:.text:00447938:80 100.00 +func_00447A00 src/pal/game/00447A00.c other - - 0.00 +func_00447AD8 src/pal/game/00447AD8.c other - - 0.00 func_00448960 src/game/00448960.c match func_00448960 main:.text:00448960:120 100.00 func_00448A20 src/game/00448A20.c match func_00448A20 main:.text:00448A20:68 100.00 func_00448C10 src/game/00448C10.c match func_00448C10 main:.text:00448C10:64 100.00 func_00448D60 src/pal/game/00448D60.c other - - 0.00 func_00449298 src/game/00449298.c match func_00449298 main:.text:00449298:184 100.00 func_004493B0 src/game/004493B0.c match func_004493B0 main:.text:004493B0:56 100.00 +func_004493D8 src/pal/game/004493D8.c other - - 0.00 func_00449A28 src/pal/game/00449A28.c other - - 0.00 func_0044B110 src/game/0044B110.c match func_0044B110 main:.text:0044B110:20 100.00 func_0044B128 src/game/0044B128.c match func_0044B128 main:.text:0044B128:16 100.00 @@ -921,10 +928,15 @@ func_0044B138 src/game/0044B138.c match func_0044B138 main:.text:0044B138:60 100 func_0044B178 src/game/0044B178.c match func_0044B178 main:.text:0044B178:60 100.00 func_0044B1B8 src/game/0044B1B8.c match func_0044B1B8 main:.text:0044B1B8:152 100.00 func_0044B250 src/game/0044B250.c match func_0044B250 main:.text:0044B250:36 100.00 +func_0044B268 src/pal/game/0044B268.c other - - 0.00 func_0044B680 src/game/0044B680.c match func_0044B680 main:.text:0044B680:48 100.00 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_0044E090 src/pal/game/0044E090.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 @@ -933,6 +945,7 @@ func_004545F8 src/game/004545F8.c match func_004545F8 main:.text:004545F8:8 100. func_00454A60 src/game/00454A60.c match func_00454A60 main:.text:00454A60:8 100.00 func_00454A68 src/game/00454A68.c match func_00454A68 main:.text:00454A68:8 100.00 func_00454C18 src/pal/game/00454C18.c other - - 0.00 +func_00454E18 src/pal/game/00454E18.c other - - 0.00 func_00455E40 src/game/00455E40.c match func_00455E40 main:.text:00455E40:56 100.00 func_004571C0 src/game/004571C0.c match func_004571C0 main:.text:004571C0:28 100.00 func_004571E0 src/game/004571E0.c match func_004571E0 main:.text:004571E0:28 100.00 @@ -940,10 +953,16 @@ func_00457200 src/game/00457200.c match func_00457200 main:.text:00457200:28 100 func_00457220 src/game/00457220.c match func_00457220 main:.text:00457220:36 100.00 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_00457AF8 src/pal/game/00457AF8.c other - - 0.00 +func_00457BA0 src/pal/game/00457BA0.c other - - 0.00 func_00457C90 src/pal/game/00457C90.c other - - 0.00 +func_00457CF0 src/pal/game/00457CF0.c other - - 0.00 +func_00457DA8 src/pal/game/00457DA8.c other - - 0.00 +func_00457E60 src/pal/game/00457E60.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 +func_00458E88 src/pal/game/00458E88.c other - - 0.00 func_004593D8 src/game/004593D8.c match func_004593D8 main:.text:004593D8:40 100.00 func_00459408 src/game/00459408.c match func_00459408 main:.text:00459408:36 100.00 func_004596E0 src/game/004596E0.c match func_004596E0 main:.text:004596E0:108 100.00 @@ -971,6 +990,8 @@ 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_0045D6C0 src/pal/game/0045D6C0.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 +999,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 @@ -987,6 +1009,7 @@ func_0045E808 src/game/0045E808.c match func_0045E808 main:.text:0045E808:40 100 func_0045E830 src/game/0045E830.c match func_0045E830 main:.text:0045E830:44 100.00 func_0045EA10 src/pal/game/0045EA10.c other - - 0.00 func_0045EFA8 src/pal/game/0045EFA8.c other - - 0.00 +func_0045F078 src/pal/game/0045F078.c other - - 0.00 func_0045F460 src/game/0045F460.c match func_0045F460 main:.text:0045F460:52 100.00 func_0045F9F8 src/game/0045F9F8.c match func_0045F9F8 main:.text:0045F9F8:28 100.00 func_0045FC28 src/pal/game/0045FC28.c other - - 0.00 @@ -1024,6 +1047,7 @@ func_00461E08 src/game/00461E08.c match func_00461E08 main:.text:00461E08:64 100 func_00461E48 src/game/00461E48.c match func_00461E48 main:.text:00461E48:68 100.00 func_00461E90 src/game/00461E90.c match func_00461E90 main:.text:00461E90:16 100.00 func_004625A0 src/game/004625A0.c match func_004625A0 main:.text:004625A0:104 100.00 +func_004635A8 src/pal/game/004635A8.c other - - 0.00 func_00464088 src/game/00464088.c match func_00464088 main:.text:00464088:8 100.00 func_00464878 src/pal/game/00464878.c other - - 0.00 func_00464980 src/game/00464980.c match func_00464980 main:.text:00464980:252 100.00 @@ -1041,6 +1065,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,10 +1075,12 @@ 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 func_00465F18 src/game/00465F18.c match func_00465F18 main:.text:00465F18:8 100.00 +func_00466128 src/pal/game/00466128.c other - - 0.00 func_00466268 src/pal/game/00466268.c other - - 0.00 func_00468B20 src/game/00468B20.c match func_00468B20 main:.text:00468B20:28 100.00 func_00468B40 src/game/00468B40.c match func_00468B40 main:.text:00468B40:56 100.00 @@ -1062,6 +1089,8 @@ func_00468BE0 src/game/00468BE0.c match func_00468BE0 main:.text:00468BE0:88 100 func_004690E8 src/game/004690E8.c match func_004690E8 main:.text:004690E8:48 100.00 func_00469280 src/game/00469280.c match func_00469280 main:.text:00469280:52 100.00 func_004694B0 src/game/004694B0.c match func_004694B0 main:.text:004694B0:8 100.00 +func_004694C8 src/pal/game/004694C8.c other - - 0.00 +func_00469508 src/pal/game/00469508.c other - - 0.00 func_00469610 src/game/00469610.c match func_00469610 main:.text:00469610:8 100.00 func_00469B10 src/pal/game/00469B10.c other - - 0.00 func_0046A290 src/game/0046A290.c match func_0046A290 main:.text:0046A290:112,frontbin:.text:00469050:112 100.00 @@ -1085,6 +1114,7 @@ func_0046D5B8 src/game/0046D5B8.c match func_0046D5B8 main:.text:0046D5B8:8,fron func_0046D5C0 src/game/0046D5C0.c match func_0046D5C0 main:.text:0046D5C0:64,frontbin:.text:0046C380:64 100.00 func_0046D668 src/game/0046D668.c match func_0046D668 main:.text:0046D668:60,frontbin:.text:0046C428:60 100.00 func_0046D6A8 src/game/0046D6A8.c match func_0046D6A8 main:.text:0046D6A8:92,frontbin:.text:0046C468:92 100.00 +func_0046D780 src/pal/game/0046D780.c other - - 0.00 func_0046D7D8 src/game/0046D7D8.c match func_0046D7D8 main:.text:0046D7D8:68,frontbin:.text:0046C598:68 100.00 func_0046D820 src/game/0046D820.c match func_0046D820 main:.text:0046D820:64,frontbin:.text:0046C5E0:64 100.00 func_0046DAA0 src/game/0046DAA0.c match func_0046DAA0 main:.text:0046DAA0:84,frontbin:.text:0046C860:84 100.00 @@ -1112,6 +1142,7 @@ func_004725D8 src/game/004725D8.c match func_004725D8 main:.text:004725D8:84,fro func_00472630 src/game/00472630.c match func_00472630 main:.text:00472630:96,frontbin:.text:004713F0:96 100.00 func_00472940 src/game/00472940.c match func_00472940 main:.text:00472940:148,frontbin:.text:00471700:148 100.00 func_00472F70 src/pal/game/00472F70.c other - - 0.00 +func_004730F8 src/pal/game/004730F8.c other - - 0.00 func_00473190 src/pal/game/00473190.c other - - 0.00 func_004731E0 src/pal/game/004731E0.c other - - 0.00 func_004737F0 src/game/004737F0.c match func_004737F0 main:.text:004737F0:120,frontbin:.text:004725B0:120 100.00 @@ -1125,6 +1156,7 @@ func_00473DE0 src/game/00473DE0.c match func_00473DE0 main:.text:00473DE0:316,fr func_00474058 src/pal/game/00474058.c other - - 0.00 func_00474090 src/game/00474090.c match func_00474090 main:.text:00474090:48,frontbin:.text:00472E50:48 100.00 func_004742B0 src/game/004742B0.c match func_004742B0 main:.text:004742B0:32,frontbin:.text:00473070:32 100.00 +func_004749A0 src/pal/game/004749A0.c other - - 0.00 func_00474DB0 src/game/00474DB0.c match func_00474DB0 main:.text:00474DB0:28,frontbin:.text:00473B70:28 100.00 func_00474E0C src/game/00474E0C.c match func_00474E0C main:.text:00474E0C:8,frontbin:.text:00473BCC:8 100.00 func_004756A8 src/game/004756A8.c match func_004756A8 main:.text:004756A8:36,frontbin:.text:00474468:36 100.00 @@ -1134,7 +1166,10 @@ func_004757E0 src/game/004757E0.c match func_004757E0 main:.text:004757E0:116,fr func_00476320 src/game/00476320.c match func_00476320 main:.text:00476320:304,frontbin:.text:004750E0:304 100.00 func_004764B8 src/game/004764B8.c match func_004764B8 main:.text:004764B8:92,frontbin:.text:00475278:92 100.00 func_004765F8 src/pal/game/004765F8.c other - - 0.00 +func_00476678 src/pal/game/00476678.c other - - 0.00 func_00476C38 src/game/00476C38.c match func_00476C38 main:.text:00476C38:68,frontbin:.text:004759F8:68 100.00 +func_00476D30 src/pal/game/00476D30.c other - - 0.00 +func_00476DF8 src/pal/game/00476DF8.c other - - 0.00 func_00476E90 src/pal/game/00476E90.c other - - 0.00 func_00476ED0 src/pal/game/00476ED0.c other - - 0.00 func_00476F08 src/pal/game/00476F08.c other - - 0.00 @@ -1156,6 +1191,7 @@ func_004790C0 src/game/004790C0.c match func_004790C0 main:.text:004790C0:40,fro func_00479580 src/game/00479580.c match func_00479580 main:.text:00479580:44,frontbin:.text:00478340:44 100.00 func_004795C0 src/game/004795C0.c match func_004795C0 main:.text:004795C0:28,frontbin:.text:00478380:28 100.00 func_004796C8 src/game/004796C8.c match func_004796C8 main:.text:004796C8:196,frontbin:.text:00478488:196 100.00 +func_00479E28 src/pal/game/00479E28.c other - - 0.00 func_0047B9B8 src/game/0047B9B8.c match func_0047B9B8 main:.text:0047B9B8:108,frontbin:.text:0047A778:108 100.00 func_0047BC10 src/game/0047BC10.c match func_0047BC10 main:.text:0047BC10:40,frontbin:.text:0047A9D0:40 100.00 func_0047BC38 src/game/0047BC38.c match func_0047BC38 main:.text:0047BC38:44,frontbin:.text:0047A9F8:44 100.00 @@ -1193,6 +1229,7 @@ func_00483340 src/game/00483340.c match func_00483340 main:.text:00483340:40,fro func_00483368 src/game/00483368.c match func_00483368 main:.text:00483368:40,frontbin:.text:00482128:40 100.00 func_00484598 src/game/00484598.c match func_00484598 main:.text:00484598:28,frontbin:.text:00483358:28 100.00 func_00484670 src/game/00484670.c match func_00484670 main:.text:00484670:156,frontbin:.text:00483430:156 100.00 +func_00484EB0 src/pal/game/00484EB0.c other - - 0.00 func_00486188 src/game/00486188.c match func_00486188 main:.text:00486188:96,frontbin:.text:00484F48:96 100.00 func_004869D8 src/game/004869D8.c match func_004869D8 main:.text:004869D8:8,frontbin:.text:00485798:8 100.00 func_00486D58 src/game/00486D58.c match func_00486D58 main:.text:00486D58:272,frontbin:.text:00485B18:272 100.00 @@ -1228,13 +1265,16 @@ func_0048A7E8 src/pal/game/0048A7E8.c other - - 0.00 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_0048AA58 src/pal/game/0048AA58.c other - - 0.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 func_0048B4B0 src/pal/game/0048B4B0.c other - - 0.00 func_0048B720 src/pal/game/0048B720.c other - - 0.00 func_0048B818 src/game/0048B818.c match func_0048B818 main:.text:0048B818:36,frontbin:.text:0048A508:36 100.00 +func_0048C420 src/pal/game/0048C420.c other - - 0.00 func_0048D038 src/game/0048D038.c match func_0048D038 main:.text:0048D038:28,frontbin:.text:0048BD28:28 100.00 func_0048DEB0 src/game/0048DEB0.c match func_0048DEB0 main:.text:0048DEB0:16,frontbin:.text:0048CBA0:16 100.00 func_0048EA78 src/game/0048EA78.c match func_0048EA78 main:.text:0048EA78:56,frontbin:.text:0048D768:56 100.00 @@ -1304,6 +1344,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 @@ -1354,6 +1395,7 @@ func_00498DB0 src/game/00498DB0.c match func_00498DB0 main:.text:00498DB0:24,fro func_00498DC8 src/game/00498DC8.c match func_00498DC8 main:.text:00498DC8:12,frontbin:.text:00497AB8:12 100.00 func_00498DD8 src/game/00498DD8.c match func_00498DD8 main:.text:00498DD8:12,frontbin:.text:00497AC8:12 100.00 func_00498FC8 src/game/00498FC8.c match func_00498FC8 main:.text:00498FC8:36,frontbin:.text:00497CB8:36 100.00 +func_00499120 src/pal/game/00499120.c other - - 0.00 func_00499270 src/game/00499270.c match func_00499270 main:.text:00499270:36,frontbin:.text:00497F60:36 100.00 func_004993A8 src/pal/game/004993A8.c other - - 0.00 func_004993D0 src/game/004993D0.c match func_004993D0 main:.text:004993D0:8,frontbin:.text:004980C0:8 100.00 @@ -1421,6 +1463,7 @@ func_0049E618 src/game/0049E618.c match func_0049E618 main:.text:0049E618:160,fr func_0049EF30 src/game/0049EF30.c match func_0049EF30 main:.text:0049EF30:176,frontbin:.text:0049DC20:176 100.00 func_0049EFE0 src/game/0049EFE0.c match func_0049EFE0 main:.text:0049EFE0:44,frontbin:.text:0049DCD0:44 100.00 func_0049F010 src/game/0049F010.c match func_0049F010 main:.text:0049F010:44,frontbin:.text:0049DD00:44 100.00 +func_0049F120 src/pal/game/0049F120.c other - - 0.00 func_0049F478 src/game/0049F478.c match func_0049F478 main:.text:0049F478:128,frontbin:.text:0049E168:128 100.00 func_0049F9F0 src/game/0049F9F0.c match func_0049F9F0 main:.text:0049F9F0:72,frontbin:.text:0049E6E0:72 100.00 func_0049FA38 src/game/0049FA38.c match func_0049FA38 main:.text:0049FA38:164,frontbin:.text:0049E728:164 100.00 @@ -1492,6 +1535,7 @@ func_004A2C1C src/game/004A2C1C.c match func_004A2C1C main:.text:004A2C1C:8,fron func_004A2D10 src/game/004A2D10.c match func_004A2D10 main:.text:004A2D10:40,frontbin:.text:004A1A00:40 100.00 func_004A2D38 src/game/004A2D38.c match func_004A2D38 main:.text:004A2D38:8,frontbin:.text:004A1A28:8 100.00 func_004A2D40 src/game/004A2D40.c match func_004A2D40 main:.text:004A2D40:76,frontbin:.text:004A1A30:76 100.00 +func_004A2D58 src/pal/game/004A2D58.c other - - 0.00 func_004A2D90 src/game/004A2D90.c match func_004A2D90 main:.text:004A2D90:68,frontbin:.text:004A1A80:68 100.00 func_004A2DEC src/game/004A2DEC.c match func_004A2DEC main:.text:004A2DEC:8,frontbin:.text:004A1ADC:8 100.00 func_004A2DF8 src/game/004A2DF8.c match func_004A2DF8 main:.text:004A2DF8:8,frontbin:.text:004A1AE8:8 100.00 @@ -1548,8 +1592,10 @@ 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_004A9288 src/pal/game/004A9288.c other - - 0.00 func_004A99A0 src/pal/game/004A99A0.c other - - 0.00 func_004A99E0 src/pal/game/004A99E0.c other - - 0.00 func_004A9C00 src/game/004A9C00.c match func_004A9C00 main:.text:004A9C00:28,frontbin:.text:004A88F0:28 100.00 @@ -1557,6 +1603,7 @@ func_004A9C30 src/game/004A9C30.c match func_004A9C30 main:.text:004A9C30:92,fro func_004A9C90 src/game/004A9C90.c match func_004A9C90 main:.text:004A9C90:8,frontbin:.text:004A8980:8 100.00 func_004A9E50 src/game/004A9E50.c match func_004A9E50 main:.text:004A9E50:336,frontbin:.text:004A8B40:336 100.00 func_004AA068 src/game/004AA068.c match func_004AA068 main:.text:004AA068:68,frontbin:.text:004A8D58:68 100.00 +func_004AA638 src/pal/game/004AA638.c other - - 0.00 func_004AAA48 src/pal/game/004AAA48.c other - - 0.00 func_004AAC9C src/game/004AAC9C.c match func_004AAC9C main:.text:004AAC9C:8,frontbin:.text:004A998C:8 100.00 func_004AACA4 src/game/004AACA4.c match func_004AACA4 main:.text:004AACA4:8,frontbin:.text:004A9994:8 100.00 @@ -1582,6 +1629,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 @@ -1607,10 +1655,12 @@ func_004AFE50 src/game/004AFE50.c match func_004AFE50 main:.text:004AFE50:92,fro func_004AFF38 src/game/004AFF38.c match func_004AFF38 main:.text:004AFF38:140,frontbin:.text:004AEC28:140 100.00 func_004AFFC8 src/game/004AFFC8.c match func_004AFFC8 main:.text:004AFFC8:84,frontbin:.text:004AECB8:84 100.00 func_004B0020 src/game/004B0020.c match func_004B0020 main:.text:004B0020:72,frontbin:.text:004AED10:72 100.00 +func_004B0028 src/pal/game/004B0028.c other - - 0.00 func_004B0068 src/game/004B0068.c match func_004B0068 main:.text:004B0068:100,frontbin:.text:004AED58:100 100.00 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 @@ -1627,10 +1677,12 @@ func_004B2160 src/game/004B2160.c match func_004B2160 main:.text:004B2160:92,fro func_004B2260 src/game/004B2260.c match func_004B2260 main:.text:004B2260:60,frontbin:.text:004B0F50:60 100.00 func_004B22A0 src/game/004B22A0.c match func_004B22A0 main:.text:004B22A0:52,frontbin:.text:004B0F90:52 100.00 func_004B22D8 src/game/004B22D8.c match func_004B22D8 main:.text:004B22D8:108,frontbin:.text:004B0FC8:108 100.00 +func_004B2508 src/pal/game/004B2508.c other - - 0.00 func_004B2BD8 src/game/004B2BD8.c match func_004B2BD8 main:.text:004B2BD8:76,frontbin:.text:004B18C8:76 100.00 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,9 +1699,12 @@ 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_004B65E8 src/pal/game/004B65E8.c other - - 0.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 func_004B6990 src/game/004B6990.c match func_004B6990 main:.text:004B6990:28,frontbin:.text:004B5680:28 100.00 @@ -1698,6 +1753,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 @@ -1770,18 +1826,22 @@ func_004C21A0 src/game/004C21A0.c match func_004C21A0 main:.text:004C21A0:68,fro func_004C2EE0 src/game/004C2EE0.c match func_004C2EE0 main:.text:004C2EE0:68,frontbin:.text:004C1BD0:68 100.00 func_004C2F28 src/game/004C2F28.c match func_004C2F28 main:.text:004C2F28:76,frontbin:.text:004C1C18:76 100.00 func_004C2F78 src/game/004C2F78.c match func_004C2F78 main:.text:004C2F78:128,frontbin:.text:004C1C68:128 100.00 +func_004C3380 src/pal/game/004C3380.c other - - 0.00 func_004C37A0 src/game/004C37A0.c match func_004C37A0 main:.text:004C37A0:128,frontbin:.text:004C2490:128 100.00 func_004C3988 src/game/004C3988.c match func_004C3988 main:.text:004C3988:124,frontbin:.text:004C2678:124 100.00 func_004C3A08 src/game/004C3A08.c match func_004C3A08 main:.text:004C3A08:280,frontbin:.text:004C26F8:280 100.00 func_004C3B20 src/game/004C3B20.c match func_004C3B20 main:.text:004C3B20:104,frontbin:.text:004C2810:104 100.00 func_004C3C38 src/game/004C3C38.c match func_004C3C38 main:.text:004C3C38:160,frontbin:.text:004C2928:160 100.00 +func_004C3E20 src/pal/game/004C3E20.c other - - 0.00 func_004C3E48 src/game/004C3E48.c match func_004C3E48 main:.text:004C3E48:172,frontbin:.text:004C2B38:172 100.00 func_004C3EE0 src/pal/game/004C3EE0.c other - - 0.00 func_004C4018 src/game/004C4018.c match func_004C4018 main:.text:004C4018:176,frontbin:.text:004C2D08:176 100.00 +func_004C4078 src/pal/game/004C4078.c other - - 0.00 func_004C40C8 src/game/004C40C8.c match func_004C40C8 main:.text:004C40C8:300,frontbin:.text:004C2DB8:300 100.00 func_004C41F8 src/game/004C41F8.c match func_004C41F8 main:.text:004C41F8:8,frontbin:.text:004C2EE8:8 100.00 func_004C4490 src/game/004C4490.c match func_004C4490 main:.text:004C4490:36,frontbin:.text:004C3180:36 100.00 func_004C44B8 src/game/004C44B8.c match func_004C44B8 main:.text:004C44B8:48,frontbin:.text:004C31A8:48 100.00 +func_004C4648 src/pal/game/004C4648.c other - - 0.00 func_004C49B0 src/pal/game/004C49B0.c other - - 0.00 func_004C5570 src/game/004C5570.c match func_004C5570 main:.text:004C5570:28,frontbin:.text:004C4260:28 100.00 func_004C5590 src/game/004C5590.c match func_004C5590 main:.text:004C5590:40,frontbin:.text:004C4280:40 100.00 @@ -1803,6 +1863,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 @@ -1819,6 +1880,7 @@ func_004C9208 src/game/004C9208.c match func_004C9208 main:.text:004C9208:56,fro func_004C9240 src/game/004C9240.c match func_004C9240 main:.text:004C9240:124,frontbin:.text:004C7F30:124 100.00 func_004C94C8 src/game/004C94C8.c match func_004C94C8 main:.text:004C94C8:28,frontbin:.text:004C81B8:28 100.00 func_004C94F8 src/game/004C94F8.c match func_004C94F8 main:.text:004C94F8:336,frontbin:.text:004C81E8:336 100.00 +func_004C9590 src/pal/game/004C9590.c other - - 0.00 func_004C9648 src/game/004C9648.c match func_004C9648 main:.text:004C9648:40,frontbin:.text:004C8338:40 100.00 func_004C9670 src/game/004C9670.c match func_004C9670 main:.text:004C9670:100,frontbin:.text:004C8360:100 100.00 func_004C96D8 src/game/004C96D8.c match func_004C96D8 main:.text:004C96D8:40,frontbin:.text:004C83C8:40 100.00 @@ -1845,6 +1907,7 @@ func_004CB620 src/game/004CB620.c match func_004CB620 main:.text:004CB620:336,fr func_004CB6B0 src/pal/game/004CB6B0.c other - - 0.00 func_004CB770 src/game/004CB770.c match func_004CB770 main:.text:004CB770:40,frontbin:.text:004CA460:40 100.00 func_004CB798 src/game/004CB798.c match func_004CB798 main:.text:004CB798:112,frontbin:.text:004CA488:112 100.00 +func_004CB7E0 src/pal/game/004CB7E0.c other - - 0.00 func_004CB808 src/game/004CB808.c match func_004CB808 main:.text:004CB808:64,frontbin:.text:004CA4F8:64 100.00 func_004CBD68 src/pal/game/004CBD68.c other - - 0.00 func_004CBEF8 src/game/004CBEF8.c match func_004CBEF8 main:.text:004CBEF8:184,frontbin:.text:004CABE8:184 100.00 @@ -1859,6 +1922,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 +1933,8 @@ 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_004CDB70 src/pal/game/004CDB70.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 @@ -1897,6 +1963,7 @@ func_004CF3E8 src/game/004CF3E8.c match func_004CF3E8 main:.text:004CF3E8:56,fro func_004CF6C0 src/game/004CF6C0.c match func_004CF6C0 main:.text:004CF6C0:20,frontbin:.text:004CE3B0:20 100.00 func_004CF6D8 src/game/004CF6D8.c match func_004CF6D8 main:.text:004CF6D8:160,frontbin:.text:004CE3C8:160 100.00 func_004CF910 src/game/004CF910.c match func_004CF910 main:.text:004CF910:64,frontbin:.text:004CE600:64 100.00 +func_004CFA08 src/pal/game/004CFA08.c other - - 0.00 func_004CFAC8 src/game/004CFAC8.c match func_004CFAC8 main:.text:004CFAC8:12,frontbin:.text:004CE7B8:12 100.00 func_004CFD10 src/pal/game/004CFD10.c other - - 0.00 func_004CFD50 src/game/004CFD50.c match func_004CFD50 main:.text:004CFD50:48,frontbin:.text:004CEA40:48 100.00 @@ -1909,6 +1976,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 @@ -1930,6 +1998,7 @@ func_004D14F0 src/game/004D14F0.c match func_004D14F0 main:.text:004D14F0:336,fr func_004D1640 src/game/004D1640.c match func_004D1640 main:.text:004D1640:40,frontbin:.text:004D0330:40 100.00 func_004D1668 src/game/004D1668.c match func_004D1668 main:.text:004D1668:104,frontbin:.text:004D0358:104 100.00 func_004D16D0 src/game/004D16D0.c match func_004D16D0 main:.text:004D16D0:56,frontbin:.text:004D03C0:56 100.00 +func_004D1750 src/pal/game/004D1750.c other - - 0.00 func_004D1960 src/game/004D1960.c match func_004D1960 main:.text:004D1960:184,frontbin:.text:004D0650:184 100.00 func_004D19E8 src/pal/game/004D19E8.c other - - 0.00 func_004D1B00 src/game/004D1B00.c match func_004D1B00 main:.text:004D1B00:192,frontbin:.text:004D07F0:192 100.00 @@ -1953,6 +2022,7 @@ func_004D2B00 src/game/004D2B00.c match func_004D2B00 main:.text:004D2B00:60,fro func_004D2B40 src/game/004D2B40.c match func_004D2B40 main:.text:004D2B40:60,frontbin:.text:004D1830:60 100.00 func_004D2B80 src/game/004D2B80.c match func_004D2B80 main:.text:004D2B80:60,frontbin:.text:004D1870:60 100.00 func_004D2C08 src/pal/game/004D2C08.c other - - 0.00 +func_004D2CB0 src/pal/game/004D2CB0.c other - - 0.00 func_004D2FF8 src/game/004D2FF8.c match func_004D2FF8 main:.text:004D2FF8:28,frontbin:.text:004D1CE8:28 100.00 func_004D3030 src/game/004D3030.c match func_004D3030 main:.text:004D3030:8,frontbin:.text:004D1D20:8 100.00 func_004D31A0 src/game/004D31A0.c match func_004D31A0 main:.text:004D31A0:76,frontbin:.text:004D1E90:76 100.00 @@ -1970,11 +2040,16 @@ func_004D3AE0 src/game/004D3AE0.c match func_004D3AE0 main:.text:004D3AE0:148,fr func_004D3C68 src/game/004D3C68.c match func_004D3C68 main:.text:004D3C68:148,frontbin:.text:004D2958:148 100.00 func_004D3DC0 src/game/004D3DC0.c match func_004D3DC0 main:.text:004D3DC0:104,frontbin:.text:004D2AB0:104 100.00 func_004D3EF0 src/game/004D3EF0.c match func_004D3EF0 main:.text:004D3EF0:8,frontbin:.text:004D2BE0:8 100.00 +func_004D4058 src/pal/game/004D4058.c other - - 0.00 func_004D4710 src/game/004D4710.c match func_004D4710 main:.text:004D4710:92,frontbin:.text:004D3400:92 100.00 func_004D4770 src/game/004D4770.c match func_004D4770 main:.text:004D4770:40,frontbin:.text:004D3460:40 100.00 +func_004D48B8 src/pal/game/004D48B8.c other - - 0.00 func_004D4928 src/game/004D4928.c match func_004D4928 main:.text:004D4928:128,frontbin:.text:004D3618:128 100.00 func_004D49A8 src/game/004D49A8.c match func_004D49A8 main:.text:004D49A8:512,frontbin:.text:004D3698:512 100.00 +func_004D4A88 src/pal/game/004D4A88.c other - - 0.00 func_004D4BA8 src/game/004D4BA8.c match func_004D4BA8 main:.text:004D4BA8:172,frontbin:.text:004D3898:172 100.00 +func_004D4C10 src/pal/game/004D4C10.c other - - 0.00 +func_004D4D38 src/pal/game/004D4D38.c other - - 0.00 func_004D5608 src/game/004D5608.c match func_004D5608 main:.text:004D5608:108,frontbin:.text:004D42F8:108 100.00 func_004D5878 src/game/004D5878.c match func_004D5878 main:.text:004D5878:28,frontbin:.text:004D4568:28 100.00 func_004D5898 src/game/004D5898.c match func_004D5898 main:.text:004D5898:56,frontbin:.text:004D4588:56 100.00 @@ -1991,11 +2066,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 @@ -2045,6 +2122,7 @@ func_004D97A8 src/game/004D97A8.c match func_004D97A8 main:.text:004D97A8:56,fro func_004D97E0 src/game/004D97E0.c match func_004D97E0 main:.text:004D97E0:188,frontbin:.text:004D84D0:188 100.00 func_004D98A0 src/game/004D98A0.c match func_004D98A0 main:.text:004D98A0:88,frontbin:.text:004D8590:88 100.00 func_004D98F8 src/game/004D98F8.c match func_004D98F8 main:.text:004D98F8:192,frontbin:.text:004D85E8:192 100.00 +func_004D9930 src/pal/game/004D9930.c other - - 0.00 func_004D9B20 src/game/004D9B20.c match func_004D9B20 main:.text:004D9B20:168,frontbin:.text:004D8810:168 100.00 func_004D9BC8 src/game/004D9BC8.c match func_004D9BC8 main:.text:004D9BC8:40,frontbin:.text:004D88B8:40 100.00 func_004D9CD8 src/game/004D9CD8.c match func_004D9CD8 main:.text:004D9CD8:88,frontbin:.text:004D89C8:88 100.00 @@ -2064,6 +2142,7 @@ func_004DBA98 src/game/004DBA98.c match func_004DBA98 main:.text:004DBA98:92,fro func_004DBAF8 src/game/004DBAF8.c match func_004DBAF8 main:.text:004DBAF8:40,frontbin:.text:004DA7E8:40 100.00 func_004DBB20 src/game/004DBB20.c match func_004DBB20 main:.text:004DBB20:104,frontbin:.text:004DA810:104 100.00 func_004DBB88 src/game/004DBB88.c match func_004DBB88 main:.text:004DBB88:64,frontbin:.text:004DA878:64 100.00 +func_004DBC50 src/pal/game/004DBC50.c other - - 0.00 func_004DBC90 src/game/004DBC90.c match func_004DBC90 main:.text:004DBC90:84,frontbin:.text:004DA980:84 100.00 func_004DBE78 src/game/004DBE78.c match func_004DBE78 main:.text:004DBE78:28,frontbin:.text:004DAB68:28 100.00 func_004DBE98 src/game/004DBE98.c match func_004DBE98 main:.text:004DBE98:40,frontbin:.text:004DAB88:40 100.00 @@ -2076,6 +2155,7 @@ func_004DCB80 src/game/004DCB80.c match func_004DCB80 main:.text:004DCB80:28,fro func_004DCBA8 src/game/004DCBA8.c match func_004DCBA8 main:.text:004DCBA8:140,frontbin:.text:004DB898:140 100.00 func_004DCC38 src/game/004DCC38.c match func_004DCC38 main:.text:004DCC38:100,frontbin:.text:004DB928:100 100.00 func_004DF098 src/game/004DF098.c match func_004DF098 main:.text:004DF098:92,frontbin:.text:004DDD88:92 100.00 +func_004DFED8 src/pal/game/004DFED8.c other - - 0.00 func_004DFF1C src/game/004DFF1C.c match func_004DFF1C main:.text:004DFF1C:8,frontbin:.text:004DEC0C:8 100.00 func_004DFF28 src/game/004DFF28.c match func_004DFF28 main:.text:004DFF28:120,frontbin:.text:004DEC18:120 100.00 func_004E04E0 src/game/004E04E0.c match func_004E04E0 main:.text:004E04E0:340,frontbin:.text:004DF1D0:340 100.00 @@ -2098,8 +2178,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,11 +2199,16 @@ 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_004E87F8 src/pal/game/004E87F8.c other - - 0.00 +func_004E88B8 src/pal/game/004E88B8.c other - - 0.00 func_004E8998 src/pal/game/004E8998.c other - - 0.00 +func_004E8BD8 src/pal/game/004E8BD8.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 +func_004EB520 src/pal/game/004EB520.c other - - 0.00 func_004EB588 src/pal/game/004EB588.c other - - 0.00 func_004EBAB0 src/pal/game/004EBAB0.c other - - 0.00 +func_004EBDD8 src/pal/game/004EBDD8.c other - - 0.00 func_004EBEA8 src/pal/game/004EBEA8.c other - - 0.00 func_004ED7B8 src/game/004ED7B8.c match func_004ED7B8 main:.text:004ED7B8:8,frontbin:.text:004EC448:8 100.00 func_004EDE40 src/game/004EDE40.c match func_004EDE40 main:.text:004EDE40:92,frontbin:.text:004ECAD0:92 100.00 @@ -2153,6 +2240,7 @@ func_004EF830 src/game/004EF830.c match func_004EF830 main:.text:004EF830:68,fro func_004EF948 src/game/004EF948.c match func_004EF948 main:.text:004EF948:192,frontbin:.text:004EE5D8:192 100.00 func_004EFA60 src/game/004EFA60.c match func_004EFA60 main:.text:004EFA60:8,frontbin:.text:004EE6F0:8 100.00 func_004EFA68 src/game/004EFA68.c match func_004EFA68 main:.text:004EFA68:100,frontbin:.text:004EE6F8:100 100.00 +func_004EFAD0 src/pal/game/004EFAD0.c other - - 0.00 func_004EFD08 src/game/004EFD08.c match func_004EFD08 main:.text:004EFD08:124,frontbin:.text:004EE998:124 100.00 func_004EFD88 src/game/004EFD88.c match func_004EFD88 main:.text:004EFD88:156,frontbin:.text:004EEA18:156 100.00 func_004EFE28 src/game/004EFE28.c match func_004EFE28 main:.text:004EFE28:388,frontbin:.text:004EEAB8:388 100.00 @@ -2161,6 +2249,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 @@ -2169,6 +2258,7 @@ func_004F0A08 src/game/004F0A08.c match func_004F0A08 main:.text:004F0A08:64,fro func_004F0A48 src/game/004F0A48.c match func_004F0A48 main:.text:004F0A48:36,frontbin:.text:004EF6D8:36 100.00 func_004F0A70 src/game/004F0A70.c match func_004F0A70 main:.text:004F0A70:20,frontbin:.text:004EF700:20 100.00 func_004F0A88 src/game/004F0A88.c match func_004F0A88 main:.text:004F0A88:40,frontbin:.text:004EF718:40 100.00 +func_004F0B38 src/pal/game/004F0B38.c other - - 0.00 func_004F0BDC src/game/004F0BDC.c match func_004F0BDC main:.text:004F0BDC:8,frontbin:.text:004EF86C:8 100.00 func_004F0BE8 src/game/004F0BE8.c match func_004F0BE8 main:.text:004F0BE8:108,frontbin:.text:004EF878:108 100.00 func_004F0C58 src/game/004F0C58.c match func_004F0C58 main:.text:004F0C58:108,frontbin:.text:004EF8E8:108 100.00 @@ -2185,6 +2275,7 @@ func_004F1848 src/game/004F1848.c match func_004F1848 main:.text:004F1848:264,fr func_004F1950 src/game/004F1950.c match func_004F1950 main:.text:004F1950:404,frontbin:.text:004F05E0:404 100.00 func_004F1AE8 src/game/004F1AE8.c match func_004F1AE8 main:.text:004F1AE8:256,frontbin:.text:004F0778:256 100.00 func_004F1BF0 src/game/004F1BF0.c match func_004F1BF0 main:.text:004F1BF0:32,frontbin:.text:004F0880:32 100.00 +func_004F1C08 src/pal/game/004F1C08.c other - - 0.00 func_004F1C10 src/game/004F1C10.c match func_004F1C10 main:.text:004F1C10:28,frontbin:.text:004F08A0:28 100.00 func_004F1C30 src/game/004F1C30.c match func_004F1C30 main:.text:004F1C30:28,frontbin:.text:004F08C0:28 100.00 func_004F1C50 src/game/004F1C50.c match func_004F1C50 main:.text:004F1C50:8,frontbin:.text:004F08E0:8 100.00 @@ -2350,10 +2441,12 @@ 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 func_00501DF8 src/game/00501DF8.c match func_00501DF8 main:.text:00501DF8:36,frontbin:.text:00500A88:36 100.00 +func_00501F70 src/pal/game/00501F70.c other - - 0.00 func_00502150 src/pal/game/00502150.c other - - 0.00 func_00502230 src/pal/game/00502230.c other - - 0.00 func_00502410 src/game/00502410.c match func_00502410 main:.text:00502410:48,frontbin:.text:005010A0:48 100.00 @@ -2369,6 +2462,8 @@ func_00502848 src/game/00502848.c match func_00502848 main:.text:00502848:120,fr func_005028C0 src/game/005028C0.c match func_005028C0 main:.text:005028C0:112,frontbin:.text:00501550:112 100.00 func_00502940 src/pal/game/00502940.c other - - 0.00 func_00502BB8 src/pal/game/00502BB8.c other - - 0.00 +func_00502D28 src/pal/game/00502D28.c other - - 0.00 +func_005037A8 src/pal/game/005037A8.c other - - 0.00 func_00503AE8 src/game/00503AE8.c match func_00503AE8 main:.text:00503AE8:112,frontbin:.text:00502778:112 100.00 func_00503B58 src/game/00503B58.c match func_00503B58 main:.text:00503B58:20,frontbin:.text:005027E8:20 100.00 func_00503B70 src/game/00503B70.c match func_00503B70 main:.text:00503B70:20,frontbin:.text:00502800:20 100.00 @@ -2379,18 +2474,53 @@ 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_00504C20 src/pal/game/00504C20.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_00504F78 src/pal/game/00504F78.c other - - 0.00 +func_005052D0 src/pal/game/005052D0.c other - - 0.00 +func_005053D0 src/pal/game/005053D0.c other - - 0.00 +func_00505488 src/pal/game/00505488.c other - - 0.00 +func_00505540 src/pal/game/00505540.c other - - 0.00 +func_005055E8 src/pal/game/005055E8.c other - - 0.00 +func_005056E0 src/pal/game/005056E0.c other - - 0.00 +func_005057D8 src/pal/game/005057D8.c other - - 0.00 +func_00505950 src/pal/game/00505950.c other - - 0.00 +func_00505A50 src/pal/game/00505A50.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_00505F00 src/pal/game/00505F00.c other - - 0.00 +func_00506000 src/pal/game/00506000.c other - - 0.00 +func_005060D8 src/pal/game/005060D8.c other - - 0.00 +func_005062D0 src/pal/game/005062D0.c other - - 0.00 +func_005063C0 src/pal/game/005063C0.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_00506678 src/pal/game/00506678.c other - - 0.00 func_00506860 src/game/00506860.c match func_00506860 main:.text:00506860:208,frontbin:.text:005054F0:208 100.00 +func_00506878 src/pal/game/00506878.c other - - 0.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_00507030 src/pal/game/00507030.c other - - 0.00 +func_005070F8 src/pal/game/005070F8.c other - - 0.00 +func_005071B8 src/pal/game/005071B8.c other - - 0.00 +func_005073F0 src/pal/game/005073F0.c other - - 0.00 +func_005074A0 src/pal/game/005074A0.c other - - 0.00 +func_005075A0 src/pal/game/005075A0.c other - - 0.00 +func_00507690 src/pal/game/00507690.c other - - 0.00 +func_00507758 src/pal/game/00507758.c other - - 0.00 +func_00507828 src/pal/game/00507828.c other - - 0.00 func_00507958 src/game/00507958.c match func_00507958 main:.text:00507958:68,frontbin:.text:005065E8:68 100.00 +func_00507C40 src/pal/game/00507C40.c other - - 0.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 func_00508578 src/game/00508578.c match func_00508578 main:.text:00508578:100,frontbin:.text:00507208:100 100.00 @@ -2436,11 +2566,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 @@ -2454,16 +2587,20 @@ func_00509F28 src/game/00509F28.c match func_00509F28 main:.text:00509F28:88,fro func_00509F80 src/game/00509F80.c match func_00509F80 main:.text:00509F80:100,frontbin:.text:00508C10:100 100.00 func_00509FE8 src/game/00509FE8.c match func_00509FE8 main:.text:00509FE8:104,frontbin:.text:00508C78:104 100.00 func_0050A050 src/game/0050A050.c match func_0050A050 main:.text:0050A050:100,frontbin:.text:00508CE0:100 100.00 +func_0050A060 src/pal/game/0050A060.c other - - 0.00 func_0050A0B8 src/game/0050A0B8.c match func_0050A0B8 main:.text:0050A0B8:104,frontbin:.text:00508D48:104 100.00 func_0050A120 src/game/0050A120.c match func_0050A120 main:.text:0050A120:92,frontbin:.text:00508DB0:92 100.00 func_0050A180 src/game/0050A180.c match func_0050A180 main:.text:0050A180:112,frontbin:.text:00508E10:112 100.00 +func_0050A1D8 src/pal/game/0050A1D8.c other - - 0.00 func_0050A1F0 src/game/0050A1F0.c match func_0050A1F0 main:.text:0050A1F0:104,frontbin:.text:00508E80:104 100.00 func_0050A258 src/game/0050A258.c match func_0050A258 main:.text:0050A258:104,frontbin:.text:00508EE8:104 100.00 func_0050A2C0 src/game/0050A2C0.c match func_0050A2C0 main:.text:0050A2C0:120,frontbin:.text:00508F50:120 100.00 func_0050A338 src/game/0050A338.c match func_0050A338 main:.text:0050A338:100,frontbin:.text:00508FC8:100 100.00 func_0050A3A0 src/game/0050A3A0.c match func_0050A3A0 main:.text:0050A3A0:80,frontbin:.text:00509030:80 100.00 +func_0050A3D0 src/pal/game/0050A3D0.c other - - 0.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 +2634,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 +2658,9 @@ 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_0050C758 src/pal/game/0050C758.c other - - 0.00 +func_0050C980 src/pal/game/0050C980.c other - - 0.00 +func_0050CAE8 src/pal/game/0050CAE8.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 @@ -2546,6 +2687,7 @@ func_0050EA00 src/game/0050EA00.c match func_0050EA00 main:.text:0050EA00:72,fro func_0050EA48 src/game/0050EA48.c match func_0050EA48 main:.text:0050EA48:48,frontbin:.text:0050D6D8:48 100.00 func_0050EA78 src/game/0050EA78.c match func_0050EA78 main:.text:0050EA78:8,frontbin:.text:0050D708:8 100.00 func_0050EA80 src/game/0050EA80.c match func_0050EA80 main:.text:0050EA80:124,frontbin:.text:0050D710:124 100.00 +func_0050EC18 src/pal/game/0050EC18.c other - - 0.00 func_0050EDC8 src/game/0050EDC8.c match func_0050EDC8 main:.text:0050EDC8:96,frontbin:.text:0050DA58:96 100.00 func_0050EE28 src/game/0050EE28.c match func_0050EE28 main:.text:0050EE28:20,frontbin:.text:0050DAB8:20 100.00 func_0050EE40 src/game/0050EE40.c match func_0050EE40 main:.text:0050EE40:36,frontbin:.text:0050DAD0:36 100.00 @@ -2561,6 +2703,7 @@ func_0050F018 src/game/0050F018.c match func_0050F018 main:.text:0050F018:20,fro func_0050F348 src/pal/game/0050F348.c other - - 0.00 func_0050F488 src/pal/game/0050F488.c other - - 0.00 func_0050F4EC src/game/0050F4EC.c match func_0050F4EC main:.text:0050F4EC:104,frontbin:.text:0050E17C:104 100.00 +func_0050FD80 src/pal/game/0050FD80.c other - - 0.00 func_0050FE20 src/pal/game/0050FE20.c other - - 0.00 func_0050FF50 src/pal/game/0050FF50.c other - - 0.00 func_0050FF90 src/pal/game/0050FF90.c other - - 0.00 @@ -2597,7 +2740,10 @@ func_00511370 src/game/00511370.c match func_00511370 main:.text:00511370:8,fron func_00511378 src/game/00511378.c match func_00511378 main:.text:00511378:8,frontbin:.text:00510008:8 100.00 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_00511530 src/pal/game/00511530.c other - - 0.00 +func_00511BA0 src/pal/game/00511BA0.c other - - 0.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 @@ -2630,12 +2776,14 @@ func_005239C8 src/game/005239C8.c match func_005239C8 main:.text:005239C8:312,fr func_00523B98 src/pal/game/00523B98.c other - - 0.00 func_00523BD8 src/pal/game/00523BD8.c other - - 0.00 func_00523E68 src/pal/game/00523E68.c other - - 0.00 +func_00524408 src/pal/game/00524408.c other - - 0.00 func_00524BE4 src/game/00524BE4.c match func_00524BE4 main:.text:00524BE4:12,frontbin:.text:00523874:12 100.00 func_0052515C src/game/0052515C.c match func_0052515C main:.text:0052515C:8,frontbin:.text:00523DEC:8 100.00 func_00525164 src/game/00525164.c match func_00525164 main:.text:00525164:8,frontbin:.text:00523DF4:8 100.00 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 +2806,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 @@ -2672,6 +2821,7 @@ func_00540770 src/game/00540770.c match func_00540770 main:.text:00540770:104,fr func_005407D8 src/game/005407D8.c match func_005407D8 main:.text:005407D8:124,frontbin:.text:0053F468:124 100.00 func_00540958 src/pal/game/00540958.c other - - 0.00 func_00540AD8 src/game/00540AD8.c match func_00540AD8 main:.text:00540AD8:8,frontbin:.text:0053F768:8 100.00 +func_00541A50 src/pal/game/00541A50.c other - - 0.00 func_00541B38 src/game/00541B38.c match func_00541B38 main:.text:00541B38:48,frontbin:.text:005407C8:48 100.00 func_005420D0 src/game/005420D0.c match func_005420D0 main:.text:005420D0:152,frontbin:.text:00540D60:152 100.00 func_005448E0 src/pal/game/005448E0.c other - - 0.00 @@ -2728,15 +2878,21 @@ func_0054AB78 src/game/0054AB78.c match func_0054AB78 main:.text:0054AB78:32,fro func_0054AB98 src/game/0054AB98.c match func_0054AB98 main:.text:0054AB98:80,frontbin:.text:00549828:80 100.00 func_0054ABE8 src/game/0054ABE8.c match func_0054ABE8 main:.text:0054ABE8:52,frontbin:.text:00549878:52 100.00 func_0054AC20 src/game/0054AC20.c match func_0054AC20 main:.text:0054AC20:52,frontbin:.text:005498B0:52 100.00 +func_0054AFA0 src/pal/game/0054AFA0.c other - - 0.00 func_0054AFB8 src/game/0054AFB8.c match func_0054AFB8 main:.text:0054AFB8:68,frontbin:.text:00549C48:68 100.00 func_0054B0E8 src/game/0054B0E8.c match func_0054B0E8 main:.text:0054B0E8:100 100.00 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_0054B6F8 src/pal/game/0054B6F8.c other - - 0.00 +func_0054B968 src/pal/game/0054B968.c other - - 0.00 func_0054C0A8 src/pal/game/0054C0A8.c other - - 0.00 +func_0054C330 src/pal/game/0054C330.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_0054E3E8 src/pal/game/0054E3E8.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 @@ -4093,16 +4249,31 @@ func_L00_006A34B8 src/overlays/shared/L00_006A34B8.c match func_L00_006A34B8 lev func_L00_006A3520 src/overlays/shared/L00_006A3520.c match func_L00_006A3520 level_00:.text:006A3520:120 100.00 func_L00_006A3598 src/overlays/shared/L00_006A3598.c match func_L00_006A3598 level_00:.text:006A3598:100 100.00 func_L00_006A3600 src/overlays/shared/L00_006A3600.c match func_L00_006A3600 level_00:.text:006A3600:80 100.00 +func_L00_006A3670 src/pal/overlays/shared/L00_006A3670.c other - - 0.00 +func_L00_006A36E0 src/pal/overlays/shared/L00_006A36E0.c other - - 0.00 func_L00_006A3790 src/overlays/shared/L00_006A3790.c match func_L00_006A3790 level_00:.text:006A3790:100 100.00 +func_L00_006A37D0 src/pal/overlays/shared/L00_006A37D0.c other - - 0.00 func_L00_006A37F8 src/overlays/shared/L00_006A37F8.c match func_L00_006A37F8 level_00:.text:006A37F8:104 100.00 func_L00_006A3860 src/overlays/shared/L00_006A3860.c match func_L00_006A3860 level_00:.text:006A3860:100 100.00 +func_L00_006A38C0 src/pal/overlays/shared/L00_006A38C0.c other - - 0.00 func_L00_006A38C8 src/overlays/shared/L00_006A38C8.c match func_L00_006A38C8 level_00:.text:006A38C8:104 100.00 +func_L00_006A3930 src/pal/overlays/shared/L00_006A3930.c other - - 0.00 func_L00_006A3990 src/overlays/shared/L00_006A3990.c match func_L00_006A3990 level_00:.text:006A3990:112 100.00 +func_L00_006A39A0 src/pal/overlays/shared/L00_006A39A0.c other - - 0.00 func_L00_006A3A00 src/overlays/shared/L00_006A3A00.c match func_L00_006A3A00 level_00:.text:006A3A00:104 100.00 +func_L00_006A3A10 src/pal/overlays/shared/L00_006A3A10.c other - - 0.00 func_L00_006A3A68 src/overlays/shared/L00_006A3A68.c match func_L00_006A3A68 level_00:.text:006A3A68:104 100.00 +func_L00_006A3A80 src/pal/overlays/shared/L00_006A3A80.c other - - 0.00 func_L00_006A3AD0 src/overlays/shared/L00_006A3AD0.c match func_L00_006A3AD0 level_00:.text:006A3AD0:120 100.00 +func_L00_006A3AF0 src/pal/overlays/shared/L00_006A3AF0.c other - - 0.00 func_L00_006A3B48 src/overlays/shared/L00_006A3B48.c match func_L00_006A3B48 level_00:.text:006A3B48:100 100.00 +func_L00_006A3B60 src/pal/overlays/shared/L00_006A3B60.c other - - 0.00 +func_L00_006A3BD0 src/pal/overlays/shared/L00_006A3BD0.c other - - 0.00 +func_L00_006A3CC0 src/pal/overlays/shared/L00_006A3CC0.c other - - 0.00 func_L00_006A3CF0 src/overlays/shared/L00_006A3CF0.c match func_L00_006A3CF0 level_00:.text:006A3CF0:84 100.00 +func_L00_006A3D30 src/pal/overlays/shared/L00_006A3D30.c other - - 0.00 +func_L00_006A3DA0 src/pal/overlays/shared/L00_006A3DA0.c other - - 0.00 +func_L00_006A3E10 src/pal/overlays/shared/L00_006A3E10.c other - - 0.00 func_L00_006A4000 src/overlays/shared/L00_006A4000.c match func_L00_006A4000 level_00:.text:006A4000:112 100.00 func_L00_006A4070 src/overlays/shared/L00_006A4070.c match func_L00_006A4070 level_00:.text:006A4070:104 100.00 func_L00_006A40D8 src/overlays/shared/L00_006A40D8.c match func_L00_006A40D8 level_00:.text:006A40D8:104 100.00 diff --git a/include/pal/word_probe.h b/include/pal/word_probe.h new file mode 100644 index 000000000..d3484faf1 --- /dev/null +++ b/include/pal/word_probe.h @@ -0,0 +1,39 @@ +#ifndef PAL_WORD_PROBE_H +#define PAL_WORD_PROBE_H + +#include "common.h" + +/* The first eight bytes are opaque. Slots contain interleaved 32-bit + * key/value words. Zero ends the search; marker-valued slots are skipped. */ +static inline s32 pal_word_probe(void *table,s32 key,s32 marker_address) { + s32 position; + s32 count; + s32 value; + u8 *keys; + u8 *values; + s32 offset; + s32 sentinel; + values = ((u8 *) table) + 12; + keys = ((u8 *) table) + 8; + count = 0; + sentinel = (s32) (marker_address); + position = key & 7; + do + { + offset = (position & 7) * 8; + value = *((s32 *) (values + offset)); + if (value == 0) + { + return 0; + } + if (((*((s32 *) (keys + offset))) == key) && (value != sentinel)) + { + return value; + } + count += 1; + position += 1299827; + } + while (count < 8); + return 0; +} +#endif diff --git a/progress/pal/report.json b/progress/pal/report.json index 47e86659d..bd8df60ea 100644 --- a/progress/pal/report.json +++ b/progress/pal/report.json @@ -1,51 +1,51 @@ { "version": 2, "measures": { - "fuzzy_match_percent": 8.485854, + "fuzzy_match_percent": 9.020714, "total_code": "5812924", - "matched_code": "464252", - "matched_code_percent": 7.986549, + "matched_code": "495712", + "matched_code_percent": 8.527756, "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": 6026, + "matched_functions_percent": 33.268923, + "complete_code": "274528", + "complete_code_percent": 4.722718, + "total_units": 3329, + "complete_units": 3270 }, "categories": [ { "id": "core", "name": "Main program", "measures": { - "fuzzy_match_percent": 11.533332, + "fuzzy_match_percent": 12.868671, "total_code": "2202512", - "matched_code": "244748", - "matched_code_percent": 11.112221, + "matched_code": "274528", + "matched_code_percent": 12.464313, "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": 3295, + "matched_functions_percent": 36.836221, + "complete_code": "274528", + "complete_code_percent": 12.464313, + "total_units": 3314, + "complete_units": 3270 } }, { "id": "core_text", "name": "Engine core (core.text)", "measures": { - "fuzzy_match_percent": 25.981504, + "fuzzy_match_percent": 26.028689, "total_code": "288232", - "matched_code": "73268", - "matched_code_percent": 25.419801, + "matched_code": "73404", + "matched_code_percent": 25.466985, "total_functions": 1668, - "matched_functions": 770, - "matched_functions_percent": 46.16307, + "matched_functions": 772, + "matched_functions_percent": 46.282974, "complete_code": "0", "complete_code_percent": 0.0, - "total_units": 774, - "complete_units": 768 + "total_units": 776, + "complete_units": 770 } }, { @@ -86,17 +86,17 @@ "id": "menu_text", "name": "Resident menus (.text)", "measures": { - "fuzzy_match_percent": 10.650415, + "fuzzy_match_percent": 12.709067, "total_code": "1422048", - "matched_code": "148512", - "matched_code_percent": 10.443529, + "matched_code": "178156", + "matched_code_percent": 12.528128, "total_functions": 4786, - "matched_functions": 1846, - "matched_functions_percent": 38.570832, + "matched_functions": 2000, + "matched_functions_percent": 41.78855, "complete_code": "0", "complete_code_percent": 0.0, - "total_units": 1868, - "complete_units": 1846 + "total_units": 2022, + "complete_units": 2000 } }, { @@ -120,13 +120,13 @@ "id": "level_code", "name": "Level code", "measures": { - "fuzzy_match_percent": 6.626757, + "fuzzy_match_percent": 6.673289, "total_code": "3610412", - "matched_code": "219504", - "matched_code_percent": 6.079749, + "matched_code": "221184", + "matched_code_percent": 6.126281, "total_functions": 9168, - "matched_functions": 2716, - "matched_functions_percent": 29.624782, + "matched_functions": 2731, + "matched_functions_percent": 29.788394, "complete_code": "0", "complete_code_percent": 0.0, "total_units": 15, @@ -137,13 +137,13 @@ "id": "common", "name": "Shared level code", "measures": { - "fuzzy_match_percent": 6.893741, + "fuzzy_match_percent": 6.977384, "total_code": "2008520", - "matched_code": "125324", - "matched_code_percent": 6.239619, + "matched_code": "127004", + "matched_code_percent": 6.323263, "total_functions": 5088, - "matched_functions": 1627, - "matched_functions_percent": 31.977201, + "matched_functions": 1642, + "matched_functions_percent": 32.272013, "complete_code": "0", "complete_code_percent": 0.0, "total_units": 1, @@ -99088,6 +99088,76 @@ ] } }, + { + "name": "pal/core/0011C750", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0011C750", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "1165136" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/core/0011C750.c", + "progress_categories": [ + "core", + "core_text" + ] + } + }, + { + "name": "pal/core/0011C978", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0011C978", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "1165688" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/core/0011C978.c", + "progress_categories": [ + "core", + "core_text" + ] + } + }, { "name": "pal/core/00129B18", "measures": { @@ -99683,6 +99753,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 +100033,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": { @@ -99998,6 +100138,76 @@ ] } }, + { + "name": "pal/game/00447A00", + "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_00447A00", + "size": "212", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4487680" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00447A00.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00447AD8", + "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_00447AD8", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4487896" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00447AD8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00448D60", "measures": { @@ -100033,6 +100243,41 @@ ] } }, + { + "name": "pal/game/004493D8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "264", + "matched_code": "264", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "264", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004493D8", + "size": "264", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4494296" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004493D8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00449A28", "measures": { @@ -100068,6 +100313,41 @@ ] } }, + { + "name": "pal/game/0044B268", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "316", + "matched_code": "316", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "316", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0044B268", + "size": "316", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4502120" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0044B268.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0044D860", "measures": { @@ -100103,6 +100383,146 @@ ] } }, + { + "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/0044E090", + "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_0044E090", + "size": "196", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4513936" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0044E090.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": { @@ -100173,6 +100593,111 @@ ] } }, + { + "name": "pal/game/00454E18", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "380", + "matched_code": "380", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "380", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00454E18", + "size": "380", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4541976" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00454E18.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00457AF8", + "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_00457AF8", + "size": "168", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4553464" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00457AF8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00457BA0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "224", + "matched_code": "224", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "224", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00457BA0", + "size": "224", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4553632" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00457BA0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00457C90", "measures": { @@ -100208,6 +100733,111 @@ ] } }, + { + "name": "pal/game/00457CF0", + "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_00457CF0", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4553968" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00457CF0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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/00457E60", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "52", + "matched_code": "52", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "52", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00457E60", + "size": "52", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4554336" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00457E60.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00457EB8", "measures": { @@ -100313,6 +100943,41 @@ ] } }, + { + "name": "pal/game/00458E88", + "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_00458E88", + "size": "112", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4558472" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00458E88.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0045A100", "measures": { @@ -100453,6 +101118,76 @@ ] } }, + { + "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/0045D6C0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "188", + "matched_code": "188", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "188", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0045D6C0", + "size": "188", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4576960" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0045D6C0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0045D908", "measures": { @@ -100488,6 +101223,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": { @@ -100558,6 +101328,41 @@ ] } }, + { + "name": "pal/game/0045F078", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "352", + "matched_code": "352", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "352", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0045F078", + "size": "352", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4583544" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0045F078.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0045FC28", "measures": { @@ -100768,6 +101573,41 @@ ] } }, + { + "name": "pal/game/004635A8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "276", + "matched_code": "276", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "276", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004635A8", + "size": "276", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4601256" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004635A8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00464878", "measures": { @@ -100838,6 +101678,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 +101748,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": { @@ -100908,6 +101818,41 @@ ] } }, + { + "name": "pal/game/00466128", + "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_00466128", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4612392" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00466128.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00466268", "measures": { @@ -100943,6 +101888,76 @@ ] } }, + { + "name": "pal/game/004694C8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "60", + "matched_code": "60", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "60", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004694C8", + "size": "60", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4625608" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004694C8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00469508", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "276", + "matched_code": "276", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "276", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00469508", + "size": "276", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4625672" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00469508.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00469B10", "measures": { @@ -100978,6 +101993,41 @@ ] } }, + { + "name": "pal/game/0046D780", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "552", + "matched_code": "552", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "552", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0046D780", + "size": "552", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4642688" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0046D780.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0046DC80", "measures": { @@ -101223,6 +102273,41 @@ ] } }, + { + "name": "pal/game/004730F8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "152", + "matched_code": "152", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "152", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004730F8", + "size": "152", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4665592" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004730F8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00473190", "measures": { @@ -101328,6 +102413,41 @@ ] } }, + { + "name": "pal/game/004749A0", + "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_004749A0", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4671904" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004749A0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004765F8", "measures": { @@ -101363,6 +102483,111 @@ ] } }, + { + "name": "pal/game/00476678", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "348", + "matched_code": "348", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "348", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00476678", + "size": "348", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4679288" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00476678.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00476D30", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "100", + "matched_code": "100", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "100", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00476D30", + "size": "100", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4681008" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00476D30.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00476DF8", + "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_00476DF8", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4681208" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00476DF8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00476E90", "measures": { @@ -101678,6 +102903,41 @@ ] } }, + { + "name": "pal/game/00479E28", + "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_00479E28", + "size": "128", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4693544" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00479E28.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0047C510", "measures": { @@ -102028,6 +103288,41 @@ ] } }, + { + "name": "pal/game/00484EB0", + "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_00484EB0", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4738736" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00484EB0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004897F8", "measures": { @@ -102238,6 +103533,76 @@ ] } }, + { + "name": "pal/game/0048AA58", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "188", + "matched_code": "188", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "188", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0048AA58", + "size": "188", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4762200" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0048AA58.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { @@ -102308,6 +103673,41 @@ ] } }, + { + "name": "pal/game/0048C420", + "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_0048C420", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4768800" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0048C420.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0048F4C0", "measures": { @@ -102623,6 +104023,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": { @@ -102868,6 +104303,41 @@ ] } }, + { + "name": "pal/game/00499120", + "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_00499120", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4821280" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00499120.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004993A8", "measures": { @@ -103113,6 +104583,41 @@ ] } }, + { + "name": "pal/game/0049F120", + "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_0049F120", + "size": "144", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4845856" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0049F120.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004A0818", "measures": { @@ -103288,6 +104793,41 @@ ] } }, + { + "name": "pal/game/004A2D58", + "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_004A2D58", + "size": "168", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4861272" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004A2D58.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004A3388", "measures": { @@ -103603,6 +105143,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": { @@ -103638,6 +105213,41 @@ ] } }, + { + "name": "pal/game/004A9288", + "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_004A9288", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4887176" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004A9288.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004A99A0", "measures": { @@ -103708,6 +105318,41 @@ ] } }, + { + "name": "pal/game/004AA638", + "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_004AA638", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4892216" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004AA638.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004AAA48", "measures": { @@ -103883,6 +105528,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": { @@ -103918,6 +105598,41 @@ ] } }, + { + "name": "pal/game/004B0028", + "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_004B0028", + "size": "228", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4915240" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B0028.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B07D8", "measures": { @@ -103953,6 +105668,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 +105808,76 @@ ] } }, + { + "name": "pal/game/004B2508", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "224", + "matched_code": "224", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "224", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004B2508", + "size": "224", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4924680" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B2508.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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 +105913,111 @@ ] } }, + { + "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/004B65E8", + "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_004B65E8", + "size": "196", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4941288" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004B65E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004B7630", "measures": { @@ -104198,6 +106123,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": { @@ -104618,6 +106578,76 @@ ] } }, + { + "name": "pal/game/004C3380", + "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_004C3380", + "size": "184", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4993920" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C3380.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004C3E20", + "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_004C3E20", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4996640" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C3E20.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004C3EE0", "measures": { @@ -104653,6 +106683,76 @@ ] } }, + { + "name": "pal/game/004C4078", + "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_004C4078", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4997240" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C4078.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004C4648", + "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_004C4648", + "size": "196", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "4998728" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C4648.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004C49B0", "measures": { @@ -104758,6 +106858,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": { @@ -104828,6 +106963,41 @@ ] } }, + { + "name": "pal/game/004C9590", + "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_004C9590", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5019024" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004C9590.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004C9FC8", "measures": { @@ -104898,6 +107068,41 @@ ] } }, + { + "name": "pal/game/004CB7E0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "260", + "matched_code": "260", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "260", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004CB7E0", + "size": "260", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5027808" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CB7E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004CBD68", "measures": { @@ -105003,6 +107208,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 +107278,76 @@ ] } }, + { + "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/004CDB70", + "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_004CDB70", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5036912" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CDB70.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004CDE78", "measures": { @@ -105213,6 +107523,41 @@ ] } }, + { + "name": "pal/game/004CFA08", + "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_004CFA08", + "size": "232", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5044744" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CFA08.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/004CFD10", "measures": { @@ -105270,13 +107615,2603 @@ "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5045984" + "virtual_address": "5045984" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004CFEE0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { + "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_004D0700", + "size": "172", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5048064" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D0700.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D08E0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "136", + "matched_code": "136", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "136", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D08E0", + "size": "136", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5048544" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D08E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D1750", + "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_004D1750", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5052240" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D1750.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D19E8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "136", + "matched_code": "136", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "136", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D19E8", + "size": "136", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5052904" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D19E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D2C08", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "136", + "matched_code": "136", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "136", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D2C08", + "size": "136", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5057544" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D2C08.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D2CB0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "152", + "matched_code": "152", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "152", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D2CB0", + "size": "152", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5057712" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D2CB0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D3708", + "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_004D3708", + "size": "156", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5060360" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D3708.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D4058", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "88", + "matched_code": "88", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "88", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D4058", + "size": "88", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5062744" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D4058.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D48B8", + "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_004D48B8", + "size": "156", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5064888" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D48B8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D4A88", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "240", + "matched_code": "240", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "240", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D4A88", + "size": "240", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5065352" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D4A88.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D4C10", + "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_004D4C10", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5065744" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D4C10.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D4D38", + "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_004D4D38", + "size": "200", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5066040" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D4D38.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { + "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_004D67E8", + "size": "124", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5072872" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D67E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D6AC8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "64", + "matched_code": "64", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "64", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D6AC8", + "size": "64", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5073608" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D6AC8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { + "fuzzy_match_percent": 100.0, + "total_code": "136", + "matched_code": "136", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "136", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D7208", + "size": "136", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5075464" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D7208.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D7D60", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "120", + "matched_code": "120", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "120", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004D7D60", + "size": "120", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5078368" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D7D60.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D82E0", + "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_004D82E0", + "size": "124", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5079776" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D82E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D8808", + "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_004D8808", + "size": "168", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5081096" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D8808.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D90F0", + "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_004D90F0", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5083376" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D90F0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004D9930", + "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_004D9930", + "size": "212", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5085488" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004D9930.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DA8D0", + "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_004DA8D0", + "size": "140", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5089488" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DA8D0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DB880", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "188", + "matched_code": "188", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "188", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004DB880", + "size": "188", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5093504" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DB880.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DBC50", + "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_004DBC50", + "size": "168", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5094480" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DBC50.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DC070", + "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_004DC070", + "size": "132", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5095536" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DC070.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DC628", + "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_004DC628", + "size": "144", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5097000" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DC628.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004DFED8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "280", + "matched_code": "280", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "280", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004DFED8", + "size": "280", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5111512" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004DFED8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004E2A78", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "60", + "matched_code": "60", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "60", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E2A78", + "size": "60", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5122680" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E2A78.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { + "fuzzy_match_percent": 100.0, + "total_code": "116", + "matched_code": "116", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "116", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E64E8", + "size": "116", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5137640" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E64E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004E87F8", + "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_004E87F8", + "size": "164", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5146616" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E87F8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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/004E8BD8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "224", + "matched_code": "224", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "224", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004E8BD8", + "size": "224", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5147608" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004E8BD8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EB520", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "100", + "matched_code": "100", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "100", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EB520", + "size": "100", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5158176" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EB520.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EB588", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "104", + "matched_code": "104", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "104", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EB588", + "size": "104", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5158280" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EB588.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EBAB0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EBAB0", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5159600" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EBAB0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EBDD8", + "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_004EBDD8", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5160408" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EBDD8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EBEA8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "96", + "matched_code": "96", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "96", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EBEA8", + "size": "96", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5160616" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EBEA8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EED20", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "152", + "matched_code": "152", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "152", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EED20", + "size": "152", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5172512" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EED20.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EEEE0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "344", + "matched_code": "344", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "344", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EEEE0", + "size": "344", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5172960" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EEEE0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004EFAD0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "60", + "matched_code": "60", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "60", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004EFAD0", + "size": "60", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5176016" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004EFAD0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F0738", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "152", + "matched_code": "152", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "152", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F0738", + "size": "152", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5179192" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F0738.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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/004F0B38", + "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_004F0B38", + "size": "192", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5180216" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F0B38.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F16B8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "16", + "matched_code": "16", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "16", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F16B8", + "size": "16", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5183160" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F16B8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F1C08", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F1C08", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5184520" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F1C08.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F2D20", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "64", + "matched_code": "64", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "64", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F2D20", + "size": "64", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5188896" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F2D20.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F3630", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "16", + "matched_code": "16", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "16", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F3630", + "size": "16", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5191216" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F3630.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F63D0", + "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_004F63D0", + "size": "112", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5202896" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F63D0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F6440", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "84", + "matched_code": "84", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "84", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F6440", + "size": "84", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5203008" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F6440.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F6660", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "60", + "matched_code": "60", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "60", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F6660", + "size": "60", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5203552" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F6660.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004F7360", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004F7360", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5206880" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004F7360.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FAD40", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "116", + "matched_code": "116", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "116", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004FAD40", + "size": "116", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5221696" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FAD40.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FC9B0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "64", + "matched_code": "64", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "64", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004FC9B0", + "size": "64", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5228976" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FC9B0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FD500", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "136", + "matched_code": "136", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "136", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004FD500", + "size": "136", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5231872" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FD500.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FD6E8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "116", + "matched_code": "116", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "116", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004FD6E8", + "size": "116", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5232360" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FD6E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FE208", + "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_004FE208", + "size": "172", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5235208" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FE208.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/004FFD10", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "72", + "matched_code": "72", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "72", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_004FFD10", + "size": "72", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5242128" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/004FFD10.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00500560", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "68", + "matched_code": "68", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "68", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00500560", + "size": "68", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5244256" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00500560.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/005008F0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "36", + "matched_code": "36", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "36", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_005008F0", + "size": "36", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5245168" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005008F0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00500C38", + "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_00500C38", + "size": "160", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5246008" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00500C38.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00500E98", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "96", + "matched_code": "96", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "96", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00500E98", + "size": "96", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5246616" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00500E98.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/005014E0", + "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_005014E0", + "size": "180", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5248224" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/005014E0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00501B58", + "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_00501B58", + "size": "112", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5249880" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00501B58.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { + "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_00501C90", + "size": "128", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5250192" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00501C90.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00501F70", + "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_00501F70", + "size": "112", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5250928" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00501F70.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00502150", + "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_00502150", + "size": "180", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5251408" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00502150.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00502230", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "52", + "matched_code": "52", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "52", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00502230", + "size": "52", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5251632" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00502230.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00502940", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "108", + "matched_code": "108", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "108", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00502940", + "size": "108", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5253440" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00502940.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00502BB8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "88", + "matched_code": "88", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "88", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00502BB8", + "size": "88", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5254072" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004CFEE0.c", + "source_path": "src/pal/game/00502BB8.c", "progress_categories": [ "core", "menu_text" @@ -105284,34 +110219,34 @@ } }, { - "name": "pal/game/004D0700", + "name": "pal/game/00502D28", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "172", - "matched_code": "172", + "total_code": "180", + "matched_code": "180", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "172", + "complete_code": "180", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D0700", - "size": "172", + "name": "func_00502D28", + "size": "180", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5048064" + "virtual_address": "5254440" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D0700.c", + "source_path": "src/pal/game/00502D28.c", "progress_categories": [ "core", "menu_text" @@ -105319,34 +110254,34 @@ } }, { - "name": "pal/game/004D08E0", + "name": "pal/game/005037A8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "136", - "matched_code": "136", + "total_code": "152", + "matched_code": "152", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "136", + "complete_code": "152", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D08E0", - "size": "136", + "name": "func_005037A8", + "size": "152", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5048544" + "virtual_address": "5257128" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D08E0.c", + "source_path": "src/pal/game/005037A8.c", "progress_categories": [ "core", "menu_text" @@ -105354,34 +110289,34 @@ } }, { - "name": "pal/game/004D19E8", + "name": "pal/game/00504AF0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "136", - "matched_code": "136", + "total_code": "144", + "matched_code": "144", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "136", + "complete_code": "144", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D19E8", - "size": "136", + "name": "func_00504AF0", + "size": "144", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5052904" + "virtual_address": "5262064" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D19E8.c", + "source_path": "src/pal/game/00504AF0.c", "progress_categories": [ "core", "menu_text" @@ -105389,34 +110324,34 @@ } }, { - "name": "pal/game/004D2C08", + "name": "pal/game/00504C20", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "136", - "matched_code": "136", + "total_code": "164", + "matched_code": "164", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "136", + "complete_code": "164", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D2C08", - "size": "136", + "name": "func_00504C20", + "size": "164", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5057544" + "virtual_address": "5262368" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D2C08.c", + "source_path": "src/pal/game/00504C20.c", "progress_categories": [ "core", "menu_text" @@ -105424,34 +110359,34 @@ } }, { - "name": "pal/game/004D3708", + "name": "pal/game/00504E10", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "156", - "matched_code": "156", + "total_code": "160", + "matched_code": "160", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "156", + "complete_code": "160", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D3708", - "size": "156", + "name": "func_00504E10", + "size": "160", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5060360" + "virtual_address": "5262864" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D3708.c", + "source_path": "src/pal/game/00504E10.c", "progress_categories": [ "core", "menu_text" @@ -105459,34 +110394,34 @@ } }, { - "name": "pal/game/004D67E8", + "name": "pal/game/00504F10", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "124", - "matched_code": "124", + "total_code": "92", + "matched_code": "92", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "124", + "complete_code": "92", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D67E8", - "size": "124", + "name": "func_00504F10", + "size": "92", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5072872" + "virtual_address": "5263120" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D67E8.c", + "source_path": "src/pal/game/00504F10.c", "progress_categories": [ "core", "menu_text" @@ -105494,34 +110429,34 @@ } }, { - "name": "pal/game/004D6AC8", + "name": "pal/game/00504F78", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "64", - "matched_code": "64", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "64", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D6AC8", - "size": "64", + "name": "func_00504F78", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5073608" + "virtual_address": "5263224" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D6AC8.c", + "source_path": "src/pal/game/00504F78.c", "progress_categories": [ "core", "menu_text" @@ -105529,34 +110464,34 @@ } }, { - "name": "pal/game/004D7208", + "name": "pal/game/005052D0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "136", - "matched_code": "136", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "136", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D7208", - "size": "136", + "name": "func_005052D0", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5075464" + "virtual_address": "5264080" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D7208.c", + "source_path": "src/pal/game/005052D0.c", "progress_categories": [ "core", "menu_text" @@ -105564,34 +110499,34 @@ } }, { - "name": "pal/game/004D7D60", + "name": "pal/game/005053D0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "120", - "matched_code": "120", + "total_code": "184", + "matched_code": "184", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "120", + "complete_code": "184", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D7D60", - "size": "120", + "name": "func_005053D0", + "size": "184", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5078368" + "virtual_address": "5264336" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D7D60.c", + "source_path": "src/pal/game/005053D0.c", "progress_categories": [ "core", "menu_text" @@ -105599,34 +110534,34 @@ } }, { - "name": "pal/game/004D82E0", + "name": "pal/game/00505488", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "124", - "matched_code": "124", + "total_code": "184", + "matched_code": "184", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "124", + "complete_code": "184", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D82E0", - "size": "124", + "name": "func_00505488", + "size": "184", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5079776" + "virtual_address": "5264520" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D82E0.c", + "source_path": "src/pal/game/00505488.c", "progress_categories": [ "core", "menu_text" @@ -105634,7 +110569,7 @@ } }, { - "name": "pal/game/004D8808", + "name": "pal/game/00505540", "measures": { "fuzzy_match_percent": 100.0, "total_code": "168", @@ -105650,18 +110585,18 @@ }, "functions": [ { - "name": "func_004D8808", + "name": "func_00505540", "size": "168", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5081096" + "virtual_address": "5264704" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D8808.c", + "source_path": "src/pal/game/00505540.c", "progress_categories": [ "core", "menu_text" @@ -105669,34 +110604,34 @@ } }, { - "name": "pal/game/004D90F0", + "name": "pal/game/005055E8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "132", - "matched_code": "132", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "132", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004D90F0", - "size": "132", + "name": "func_005055E8", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5083376" + "virtual_address": "5264872" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004D90F0.c", + "source_path": "src/pal/game/005055E8.c", "progress_categories": [ "core", "menu_text" @@ -105704,34 +110639,34 @@ } }, { - "name": "pal/game/004DA8D0", + "name": "pal/game/005056E0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "140", - "matched_code": "140", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "140", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004DA8D0", - "size": "140", + "name": "func_005056E0", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5089488" + "virtual_address": "5265120" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004DA8D0.c", + "source_path": "src/pal/game/005056E0.c", "progress_categories": [ "core", "menu_text" @@ -105739,34 +110674,34 @@ } }, { - "name": "pal/game/004DB880", + "name": "pal/game/005057D8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "188", - "matched_code": "188", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "188", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004DB880", - "size": "188", + "name": "func_005057D8", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5093504" + "virtual_address": "5265368" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004DB880.c", + "source_path": "src/pal/game/005057D8.c", "progress_categories": [ "core", "menu_text" @@ -105774,34 +110709,34 @@ } }, { - "name": "pal/game/004DC070", + "name": "pal/game/00505950", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "132", - "matched_code": "132", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "132", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004DC070", - "size": "132", + "name": "func_00505950", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5095536" + "virtual_address": "5265744" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004DC070.c", + "source_path": "src/pal/game/00505950.c", "progress_categories": [ "core", "menu_text" @@ -105809,34 +110744,34 @@ } }, { - "name": "pal/game/004DC628", + "name": "pal/game/00505A50", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "144", - "matched_code": "144", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "144", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004DC628", - "size": "144", + "name": "func_00505A50", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5097000" + "virtual_address": "5266000" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004DC628.c", + "source_path": "src/pal/game/00505A50.c", "progress_categories": [ "core", "menu_text" @@ -105844,34 +110779,34 @@ } }, { - "name": "pal/game/004E2A78", + "name": "pal/game/00505B40", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "60", - "matched_code": "60", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "60", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004E2A78", - "size": "60", + "name": "func_00505B40", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5122680" + "virtual_address": "5266240" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004E2A78.c", + "source_path": "src/pal/game/00505B40.c", "progress_categories": [ "core", "menu_text" @@ -105879,34 +110814,34 @@ } }, { - "name": "pal/game/004E64E8", + "name": "pal/game/00505D18", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "116", - "matched_code": "116", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "116", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004E64E8", - "size": "116", + "name": "func_00505D18", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5137640" + "virtual_address": "5266712" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004E64E8.c", + "source_path": "src/pal/game/00505D18.c", "progress_categories": [ "core", "menu_text" @@ -105914,34 +110849,34 @@ } }, { - "name": "pal/game/004EB588", + "name": "pal/game/00505F00", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "104", - "matched_code": "104", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "104", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004EB588", - "size": "104", + "name": "func_00505F00", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5158280" + "virtual_address": "5267200" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004EB588.c", + "source_path": "src/pal/game/00505F00.c", "progress_categories": [ "core", "menu_text" @@ -105949,34 +110884,34 @@ } }, { - "name": "pal/game/004EBAB0", + "name": "pal/game/00506000", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "68", - "matched_code": "68", + "total_code": "212", + "matched_code": "212", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "68", + "complete_code": "212", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004EBAB0", - "size": "68", + "name": "func_00506000", + "size": "212", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5159600" + "virtual_address": "5267456" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004EBAB0.c", + "source_path": "src/pal/game/00506000.c", "progress_categories": [ "core", "menu_text" @@ -105984,34 +110919,34 @@ } }, { - "name": "pal/game/004EBEA8", + "name": "pal/game/005060D8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "96", - "matched_code": "96", + "total_code": "212", + "matched_code": "212", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "96", + "complete_code": "212", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004EBEA8", - "size": "96", + "name": "func_005060D8", + "size": "212", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5160616" + "virtual_address": "5267672" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004EBEA8.c", + "source_path": "src/pal/game/005060D8.c", "progress_categories": [ "core", "menu_text" @@ -106019,34 +110954,34 @@ } }, { - "name": "pal/game/004EED20", + "name": "pal/game/005062D0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "152", - "matched_code": "152", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "152", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004EED20", - "size": "152", + "name": "func_005062D0", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5172512" + "virtual_address": "5268176" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004EED20.c", + "source_path": "src/pal/game/005062D0.c", "progress_categories": [ "core", "menu_text" @@ -106054,34 +110989,34 @@ } }, { - "name": "pal/game/004EEEE0", + "name": "pal/game/005063C0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "344", - "matched_code": "344", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "344", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004EEEE0", - "size": "344", + "name": "func_005063C0", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5172960" + "virtual_address": "5268416" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004EEEE0.c", + "source_path": "src/pal/game/005063C0.c", "progress_categories": [ "core", "menu_text" @@ -106089,34 +111024,34 @@ } }, { - "name": "pal/game/004F0738", + "name": "pal/game/00506590", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "152", - "matched_code": "152", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "152", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F0738", - "size": "152", + "name": "func_00506590", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5179192" + "virtual_address": "5268880" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F0738.c", + "source_path": "src/pal/game/00506590.c", "progress_categories": [ "core", "menu_text" @@ -106124,34 +111059,34 @@ } }, { - "name": "pal/game/004F16B8", + "name": "pal/game/00506678", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "16", - "matched_code": "16", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "16", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F16B8", - "size": "16", + "name": "func_00506678", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5183160" + "virtual_address": "5269112" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F16B8.c", + "source_path": "src/pal/game/00506678.c", "progress_categories": [ "core", "menu_text" @@ -106159,34 +111094,34 @@ } }, { - "name": "pal/game/004F2D20", + "name": "pal/game/00506878", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "64", - "matched_code": "64", + "total_code": "244", + "matched_code": "244", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "64", + "complete_code": "244", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F2D20", - "size": "64", + "name": "func_00506878", + "size": "244", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5188896" + "virtual_address": "5269624" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F2D20.c", + "source_path": "src/pal/game/00506878.c", "progress_categories": [ "core", "menu_text" @@ -106194,34 +111129,34 @@ } }, { - "name": "pal/game/004F3630", + "name": "pal/game/00506A70", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "16", - "matched_code": "16", + "total_code": "228", + "matched_code": "228", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "16", + "complete_code": "228", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F3630", - "size": "16", + "name": "func_00506A70", + "size": "228", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5191216" + "virtual_address": "5270128" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F3630.c", + "source_path": "src/pal/game/00506A70.c", "progress_categories": [ "core", "menu_text" @@ -106229,34 +111164,34 @@ } }, { - "name": "pal/game/004F63D0", + "name": "pal/game/00506C08", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "140", + "matched_code": "140", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "140", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F63D0", - "size": "112", + "name": "func_00506C08", + "size": "140", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5202896" + "virtual_address": "5270536" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F63D0.c", + "source_path": "src/pal/game/00506C08.c", "progress_categories": [ "core", "menu_text" @@ -106264,34 +111199,34 @@ } }, { - "name": "pal/game/004F6440", + "name": "pal/game/00506F68", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "84", - "matched_code": "84", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "84", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F6440", - "size": "84", + "name": "func_00506F68", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5203008" + "virtual_address": "5271400" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F6440.c", + "source_path": "src/pal/game/00506F68.c", "progress_categories": [ "core", "menu_text" @@ -106299,34 +111234,34 @@ } }, { - "name": "pal/game/004F6660", + "name": "pal/game/00507030", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "60", - "matched_code": "60", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "60", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F6660", - "size": "60", + "name": "func_00507030", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5203552" + "virtual_address": "5271600" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F6660.c", + "source_path": "src/pal/game/00507030.c", "progress_categories": [ "core", "menu_text" @@ -106334,34 +111269,34 @@ } }, { - "name": "pal/game/004F7360", + "name": "pal/game/005070F8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "68", - "matched_code": "68", + "total_code": "188", + "matched_code": "188", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "68", + "complete_code": "188", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004F7360", - "size": "68", + "name": "func_005070F8", + "size": "188", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5206880" + "virtual_address": "5271800" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004F7360.c", + "source_path": "src/pal/game/005070F8.c", "progress_categories": [ "core", "menu_text" @@ -106369,34 +111304,34 @@ } }, { - "name": "pal/game/004FAD40", + "name": "pal/game/005071B8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "116", - "matched_code": "116", + "total_code": "184", + "matched_code": "184", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "116", + "complete_code": "184", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FAD40", - "size": "116", + "name": "func_005071B8", + "size": "184", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5221696" + "virtual_address": "5271992" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FAD40.c", + "source_path": "src/pal/game/005071B8.c", "progress_categories": [ "core", "menu_text" @@ -106404,34 +111339,34 @@ } }, { - "name": "pal/game/004FC9B0", + "name": "pal/game/005073F0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "64", - "matched_code": "64", + "total_code": "172", + "matched_code": "172", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "64", + "complete_code": "172", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FC9B0", - "size": "64", + "name": "func_005073F0", + "size": "172", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5228976" + "virtual_address": "5272560" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FC9B0.c", + "source_path": "src/pal/game/005073F0.c", "progress_categories": [ "core", "menu_text" @@ -106439,34 +111374,34 @@ } }, { - "name": "pal/game/004FD500", + "name": "pal/game/005074A0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "136", - "matched_code": "136", + "total_code": "236", + "matched_code": "236", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "136", + "complete_code": "236", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FD500", - "size": "136", + "name": "func_005074A0", + "size": "236", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5231872" + "virtual_address": "5272736" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FD500.c", + "source_path": "src/pal/game/005074A0.c", "progress_categories": [ "core", "menu_text" @@ -106474,34 +111409,34 @@ } }, { - "name": "pal/game/004FD6E8", + "name": "pal/game/005075A0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "116", - "matched_code": "116", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "116", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FD6E8", - "size": "116", + "name": "func_005075A0", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5232360" + "virtual_address": "5272992" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FD6E8.c", + "source_path": "src/pal/game/005075A0.c", "progress_categories": [ "core", "menu_text" @@ -106509,34 +111444,34 @@ } }, { - "name": "pal/game/004FE208", + "name": "pal/game/00507690", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "172", - "matched_code": "172", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "172", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FE208", - "size": "172", + "name": "func_00507690", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5235208" + "virtual_address": "5273232" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FE208.c", + "source_path": "src/pal/game/00507690.c", "progress_categories": [ "core", "menu_text" @@ -106544,34 +111479,34 @@ } }, { - "name": "pal/game/004FFD10", + "name": "pal/game/00507758", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "72", - "matched_code": "72", + "total_code": "200", + "matched_code": "200", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "72", + "complete_code": "200", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_004FFD10", - "size": "72", + "name": "func_00507758", + "size": "200", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5242128" + "virtual_address": "5273432" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/004FFD10.c", + "source_path": "src/pal/game/00507758.c", "progress_categories": [ "core", "menu_text" @@ -106579,34 +111514,34 @@ } }, { - "name": "pal/game/00500560", + "name": "pal/game/00507828", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "68", - "matched_code": "68", + "total_code": "208", + "matched_code": "208", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "68", + "complete_code": "208", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00500560", - "size": "68", + "name": "func_00507828", + "size": "208", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5244256" + "virtual_address": "5273640" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00500560.c", + "source_path": "src/pal/game/00507828.c", "progress_categories": [ "core", "menu_text" @@ -106614,34 +111549,34 @@ } }, { - "name": "pal/game/005008F0", + "name": "pal/game/00507C40", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "36", - "matched_code": "36", + "total_code": "144", + "matched_code": "144", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "36", + "complete_code": "144", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_005008F0", - "size": "36", + "name": "func_00507C40", + "size": "144", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5245168" + "virtual_address": "5274688" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/005008F0.c", + "source_path": "src/pal/game/00507C40.c", "progress_categories": [ "core", "menu_text" @@ -106649,34 +111584,34 @@ } }, { - "name": "pal/game/00500C38", + "name": "pal/game/00508A38", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "160", - "matched_code": "160", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "160", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00500C38", - "size": "160", + "name": "func_00508A38", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5246008" + "virtual_address": "5278264" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00500C38.c", + "source_path": "src/pal/game/00508A38.c", "progress_categories": [ "core", "menu_text" @@ -106684,34 +111619,34 @@ } }, { - "name": "pal/game/00500E98", + "name": "pal/game/00508AA8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "96", - "matched_code": "96", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "96", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00500E98", - "size": "96", + "name": "func_00508AA8", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5246616" + "virtual_address": "5278376" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00500E98.c", + "source_path": "src/pal/game/00508AA8.c", "progress_categories": [ "core", "menu_text" @@ -106719,34 +111654,34 @@ } }, { - "name": "pal/game/005014E0", + "name": "pal/game/00508B18", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "180", - "matched_code": "180", + "total_code": "128", + "matched_code": "128", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "180", + "complete_code": "128", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_005014E0", - "size": "180", + "name": "func_00508B18", + "size": "128", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5248224" + "virtual_address": "5278488" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/005014E0.c", + "source_path": "src/pal/game/00508B18.c", "progress_categories": [ "core", "menu_text" @@ -106754,7 +111689,7 @@ } }, { - "name": "pal/game/00501B58", + "name": "pal/game/00508B98", "measures": { "fuzzy_match_percent": 100.0, "total_code": "112", @@ -106770,18 +111705,18 @@ }, "functions": [ { - "name": "func_00501B58", + "name": "func_00508B98", "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5249880" + "virtual_address": "5278616" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00501B58.c", + "source_path": "src/pal/game/00508B98.c", "progress_categories": [ "core", "menu_text" @@ -106789,7 +111724,7 @@ } }, { - "name": "pal/game/00501C90", + "name": "pal/game/00508C08", "measures": { "fuzzy_match_percent": 100.0, "total_code": "128", @@ -106805,18 +111740,18 @@ }, "functions": [ { - "name": "func_00501C90", + "name": "func_00508C08", "size": "128", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5250192" + "virtual_address": "5278728" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00501C90.c", + "source_path": "src/pal/game/00508C08.c", "progress_categories": [ "core", "menu_text" @@ -106824,34 +111759,34 @@ } }, { - "name": "pal/game/00502150", + "name": "pal/game/00508C88", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "180", - "matched_code": "180", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "180", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00502150", - "size": "180", + "name": "func_00508C88", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5251408" + "virtual_address": "5278856" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00502150.c", + "source_path": "src/pal/game/00508C88.c", "progress_categories": [ "core", "menu_text" @@ -106859,34 +111794,34 @@ } }, { - "name": "pal/game/00502230", + "name": "pal/game/00508CF8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "52", - "matched_code": "52", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "52", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00502230", - "size": "52", + "name": "func_00508CF8", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5251632" + "virtual_address": "5278968" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00502230.c", + "source_path": "src/pal/game/00508CF8.c", "progress_categories": [ "core", "menu_text" @@ -106894,34 +111829,34 @@ } }, { - "name": "pal/game/00502940", + "name": "pal/game/00508D68", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "108", - "matched_code": "108", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "108", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00502940", - "size": "108", + "name": "func_00508D68", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5253440" + "virtual_address": "5279080" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00502940.c", + "source_path": "src/pal/game/00508D68.c", "progress_categories": [ "core", "menu_text" @@ -106929,34 +111864,34 @@ } }, { - "name": "pal/game/00502BB8", + "name": "pal/game/00508DD8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "88", - "matched_code": "88", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "88", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00502BB8", - "size": "88", + "name": "func_00508DD8", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5254072" + "virtual_address": "5279192" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00502BB8.c", + "source_path": "src/pal/game/00508DD8.c", "progress_categories": [ "core", "menu_text" @@ -106964,34 +111899,34 @@ } }, { - "name": "pal/game/00504AF0", + "name": "pal/game/00508E48", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "144", - "matched_code": "144", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "144", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00504AF0", - "size": "144", + "name": "func_00508E48", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5262064" + "virtual_address": "5279304" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00504AF0.c", + "source_path": "src/pal/game/00508E48.c", "progress_categories": [ "core", "menu_text" @@ -106999,34 +111934,34 @@ } }, { - "name": "pal/game/00504F10", + "name": "pal/game/00508EB8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "92", - "matched_code": "92", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "92", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00504F10", - "size": "92", + "name": "func_00508EB8", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5263120" + "virtual_address": "5279416" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00504F10.c", + "source_path": "src/pal/game/00508EB8.c", "progress_categories": [ "core", "menu_text" @@ -107034,7 +111969,7 @@ } }, { - "name": "pal/game/00508A38", + "name": "pal/game/00508F28", "measures": { "fuzzy_match_percent": 100.0, "total_code": "112", @@ -107050,18 +111985,18 @@ }, "functions": [ { - "name": "func_00508A38", + "name": "func_00508F28", "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278264" + "virtual_address": "5279528" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508A38.c", + "source_path": "src/pal/game/00508F28.c", "progress_categories": [ "core", "menu_text" @@ -107069,7 +112004,7 @@ } }, { - "name": "pal/game/00508AA8", + "name": "pal/game/00508F98", "measures": { "fuzzy_match_percent": 100.0, "total_code": "112", @@ -107085,18 +112020,18 @@ }, "functions": [ { - "name": "func_00508AA8", + "name": "func_00508F98", "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278376" + "virtual_address": "5279640" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508AA8.c", + "source_path": "src/pal/game/00508F98.c", "progress_categories": [ "core", "menu_text" @@ -107104,7 +112039,7 @@ } }, { - "name": "pal/game/00508B18", + "name": "pal/game/00509008", "measures": { "fuzzy_match_percent": 100.0, "total_code": "128", @@ -107120,18 +112055,18 @@ }, "functions": [ { - "name": "func_00508B18", + "name": "func_00509008", "size": "128", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278488" + "virtual_address": "5279752" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508B18.c", + "source_path": "src/pal/game/00509008.c", "progress_categories": [ "core", "menu_text" @@ -107139,7 +112074,7 @@ } }, { - "name": "pal/game/00508B98", + "name": "pal/game/005090F8", "measures": { "fuzzy_match_percent": 100.0, "total_code": "112", @@ -107155,18 +112090,18 @@ }, "functions": [ { - "name": "func_00508B98", + "name": "func_005090F8", "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278616" + "virtual_address": "5279992" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508B98.c", + "source_path": "src/pal/game/005090F8.c", "progress_categories": [ "core", "menu_text" @@ -107174,34 +112109,34 @@ } }, { - "name": "pal/game/00508C08", + "name": "pal/game/00509168", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "128", - "matched_code": "128", + "total_code": "112", + "matched_code": "112", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "128", + "complete_code": "112", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508C08", - "size": "128", + "name": "func_00509168", + "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278728" + "virtual_address": "5280104" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508C08.c", + "source_path": "src/pal/game/00509168.c", "progress_categories": [ "core", "menu_text" @@ -107209,7 +112144,7 @@ } }, { - "name": "pal/game/00508C88", + "name": "pal/game/005091D8", "measures": { "fuzzy_match_percent": 100.0, "total_code": "112", @@ -107225,18 +112160,18 @@ }, "functions": [ { - "name": "func_00508C88", + "name": "func_005091D8", "size": "112", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278856" + "virtual_address": "5280216" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508C88.c", + "source_path": "src/pal/game/005091D8.c", "progress_categories": [ "core", "menu_text" @@ -107244,34 +112179,34 @@ } }, { - "name": "pal/game/00508CF8", + "name": "pal/game/00509428", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508CF8", - "size": "112", + "name": "func_00509428", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5278968" + "virtual_address": "5280808" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508CF8.c", + "source_path": "src/pal/game/00509428.c", "progress_categories": [ "core", "menu_text" @@ -107279,34 +112214,34 @@ } }, { - "name": "pal/game/00508D68", + "name": "pal/game/00509550", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508D68", - "size": "112", + "name": "func_00509550", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279080" + "virtual_address": "5281104" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508D68.c", + "source_path": "src/pal/game/00509550.c", "progress_categories": [ "core", "menu_text" @@ -107314,34 +112249,34 @@ } }, { - "name": "pal/game/00508DD8", + "name": "pal/game/00509738", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508DD8", - "size": "112", + "name": "func_00509738", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279192" + "virtual_address": "5281592" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508DD8.c", + "source_path": "src/pal/game/00509738.c", "progress_categories": [ "core", "menu_text" @@ -107349,34 +112284,34 @@ } }, { - "name": "pal/game/00508E48", + "name": "pal/game/00509850", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508E48", - "size": "112", + "name": "func_00509850", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279304" + "virtual_address": "5281872" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508E48.c", + "source_path": "src/pal/game/00509850.c", "progress_categories": [ "core", "menu_text" @@ -107384,34 +112319,34 @@ } }, { - "name": "pal/game/00508EB8", + "name": "pal/game/00509960", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508EB8", - "size": "112", + "name": "func_00509960", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279416" + "virtual_address": "5282144" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508EB8.c", + "source_path": "src/pal/game/00509960.c", "progress_categories": [ "core", "menu_text" @@ -107419,34 +112354,34 @@ } }, { - "name": "pal/game/00508F28", + "name": "pal/game/00509B98", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508F28", - "size": "112", + "name": "func_00509B98", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279528" + "virtual_address": "5282712" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508F28.c", + "source_path": "src/pal/game/00509B98.c", "progress_categories": [ "core", "menu_text" @@ -107454,34 +112389,34 @@ } }, { - "name": "pal/game/00508F98", + "name": "pal/game/0050A060", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00508F98", - "size": "112", + "name": "func_0050A060", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279640" + "virtual_address": "5283936" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00508F98.c", + "source_path": "src/pal/game/0050A060.c", "progress_categories": [ "core", "menu_text" @@ -107489,34 +112424,34 @@ } }, { - "name": "pal/game/00509008", + "name": "pal/game/0050A1D8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "128", - "matched_code": "128", + "total_code": "232", + "matched_code": "232", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "128", + "complete_code": "232", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00509008", - "size": "128", + "name": "func_0050A1D8", + "size": "232", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279752" + "virtual_address": "5284312" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00509008.c", + "source_path": "src/pal/game/0050A1D8.c", "progress_categories": [ "core", "menu_text" @@ -107524,34 +112459,34 @@ } }, { - "name": "pal/game/005090F8", + "name": "pal/game/0050A3D0", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "216", + "matched_code": "216", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "216", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_005090F8", - "size": "112", + "name": "func_0050A3D0", + "size": "216", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5279992" + "virtual_address": "5284816" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/005090F8.c", + "source_path": "src/pal/game/0050A3D0.c", "progress_categories": [ "core", "menu_text" @@ -107559,34 +112494,34 @@ } }, { - "name": "pal/game/00509168", + "name": "pal/game/0050A660", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00509168", - "size": "112", + "name": "func_0050A660", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5280104" + "virtual_address": "5285472" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00509168.c", + "source_path": "src/pal/game/0050A660.c", "progress_categories": [ "core", "menu_text" @@ -107594,34 +112529,34 @@ } }, { - "name": "pal/game/005091D8", + "name": "pal/game/0050B5F8", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "112", - "matched_code": "112", + "total_code": "192", + "matched_code": "192", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "112", + "complete_code": "192", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_005091D8", - "size": "112", + "name": "func_0050B5F8", + "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5280216" + "virtual_address": "5289464" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/005091D8.c", + "source_path": "src/pal/game/0050B5F8.c", "progress_categories": [ "core", "menu_text" @@ -107629,7 +112564,7 @@ } }, { - "name": "pal/game/00509428", + "name": "pal/game/0050BEC8", "measures": { "fuzzy_match_percent": 100.0, "total_code": "192", @@ -107645,18 +112580,18 @@ }, "functions": [ { - "name": "func_00509428", + "name": "func_0050BEC8", "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5280808" + "virtual_address": "5291720" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00509428.c", + "source_path": "src/pal/game/0050BEC8.c", "progress_categories": [ "core", "menu_text" @@ -107664,34 +112599,34 @@ } }, { - "name": "pal/game/00509550", + "name": "pal/game/0050C758", "measures": { "fuzzy_match_percent": 100.0, - "total_code": "192", - "matched_code": "192", + "total_code": "232", + "matched_code": "232", "matched_code_percent": 100.0, "total_functions": 1, "matched_functions": 1, "matched_functions_percent": 100.0, - "complete_code": "192", + "complete_code": "232", "complete_code_percent": 100.0, "total_units": 1, "complete_units": 1 }, "functions": [ { - "name": "func_00509550", - "size": "192", + "name": "func_0050C758", + "size": "232", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5281104" + "virtual_address": "5293912" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00509550.c", + "source_path": "src/pal/game/0050C758.c", "progress_categories": [ "core", "menu_text" @@ -107699,7 +112634,7 @@ } }, { - "name": "pal/game/00509B98", + "name": "pal/game/0050C980", "measures": { "fuzzy_match_percent": 100.0, "total_code": "192", @@ -107715,18 +112650,18 @@ }, "functions": [ { - "name": "func_00509B98", + "name": "func_0050C980", "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5282712" + "virtual_address": "5294464" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/00509B98.c", + "source_path": "src/pal/game/0050C980.c", "progress_categories": [ "core", "menu_text" @@ -107734,7 +112669,7 @@ } }, { - "name": "pal/game/0050BEC8", + "name": "pal/game/0050CAE8", "measures": { "fuzzy_match_percent": 100.0, "total_code": "192", @@ -107750,18 +112685,18 @@ }, "functions": [ { - "name": "func_0050BEC8", + "name": "func_0050CAE8", "size": "192", "fuzzy_match_percent": 100.0, "address": "0", "metadata": { - "virtual_address": "5291720" + "virtual_address": "5294824" } } ], "metadata": { "complete": true, - "source_path": "src/pal/game/0050BEC8.c", + "source_path": "src/pal/game/0050CAE8.c", "progress_categories": [ "core", "menu_text" @@ -107803,6 +112738,41 @@ ] } }, + { + "name": "pal/game/0050EC18", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "252", + "matched_code": "252", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "252", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0050EC18", + "size": "252", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5303320" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0050EC18.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0050F348", "measures": { @@ -107873,6 +112843,41 @@ ] } }, + { + "name": "pal/game/0050FD80", + "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_0050FD80", + "size": "156", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5307776" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0050FD80.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0050FE20", "measures": { @@ -108118,6 +113123,76 @@ ] } }, + { + "name": "pal/game/00511530", + "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_00511530", + "size": "208", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5313840" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00511530.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "name": "pal/game/00511BA0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "104", + "matched_code": "104", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "104", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00511BA0", + "size": "104", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5315488" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00511BA0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/00512370", "measures": { @@ -108153,6 +113228,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 +113578,76 @@ ] } }, + { + "name": "pal/game/00524408", + "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_00524408", + "size": "172", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5391368" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00524408.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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 +113788,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": { @@ -108678,6 +113893,41 @@ ] } }, + { + "name": "pal/game/00541A50", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "176", + "matched_code": "176", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "176", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_00541A50", + "size": "176", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5511760" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/00541A50.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/005448E0", "measures": { @@ -108818,6 +114068,41 @@ ] } }, + { + "name": "pal/game/0054AFA0", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "176", + "matched_code": "176", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "176", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0054AFA0", + "size": "176", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5549984" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054AFA0.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0054B120", "measures": { @@ -108888,6 +114173,76 @@ ] } }, + { + "name": "pal/game/0054B6F8", + "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_0054B6F8", + "size": "204", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5551864" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054B6F8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, + { + "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": { @@ -108923,6 +114278,41 @@ ] } }, + { + "name": "pal/game/0054C330", + "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_0054C330", + "size": "208", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5554992" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054C330.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0054C650", "measures": { @@ -108958,6 +114348,76 @@ ] } }, + { + "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/0054E3E8", + "measures": { + "fuzzy_match_percent": 100.0, + "total_code": "104", + "matched_code": "104", + "matched_code_percent": 100.0, + "total_functions": 1, + "matched_functions": 1, + "matched_functions_percent": 100.0, + "complete_code": "104", + "complete_code_percent": 100.0, + "total_units": 1, + "complete_units": 1 + }, + "functions": [ + { + "name": "func_0054E3E8", + "size": "104", + "fuzzy_match_percent": 100.0, + "address": "0", + "metadata": { + "virtual_address": "5563368" + } + } + ], + "metadata": { + "complete": true, + "source_path": "src/pal/game/0054E3E8.c", + "progress_categories": [ + "core", + "menu_text" + ] + } + }, { "name": "pal/game/0054EB10", "measures": { @@ -114052,10 +119512,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 +119857,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 +120298,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 +120744,10 @@ "name": "main/.text/0044xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "63300", + "total_code": "61680", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 114, + "total_functions": 106, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -115557,24 +120999,6 @@ "virtual_address": "4487456" } }, - { - "name": "func_00447A00", - "size": "212", - "fuzzy_match_percent": 0.0, - "address": "30880", - "metadata": { - "virtual_address": "4487680" - } - }, - { - "name": "func_00447AD8", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "31096", - "metadata": { - "virtual_address": "4487896" - } - }, { "name": "func_00447B90", "size": "1000", @@ -115683,15 +121107,6 @@ "virtual_address": "4493992" } }, - { - "name": "func_004493D8", - "size": "264", - "fuzzy_match_percent": 0.0, - "address": "37496", - "metadata": { - "virtual_address": "4494296" - } - }, { "name": "func_004494E0", "size": "4", @@ -115899,15 +121314,6 @@ "virtual_address": "4501960" } }, - { - "name": "func_0044B268", - "size": "316", - "fuzzy_match_percent": 0.0, - "address": "45320", - "metadata": { - "virtual_address": "4502120" - } - }, { "name": "func_0044B3A8", "size": "28", @@ -116097,15 +121503,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,33 +121557,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", - "fuzzy_match_percent": 0.0, - "address": "57136", - "metadata": { - "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 +121724,10 @@ "name": "main/.text/0045xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "61840", + "total_code": "59580", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 157, + "total_functions": 146, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -116960,15 +122330,6 @@ "virtual_address": "4541496" } }, - { - "name": "func_00454E18", - "size": "380", - "fuzzy_match_percent": 0.0, - "address": "19752", - "metadata": { - "virtual_address": "4541976" - } - }, { "name": "func_00454F98", "size": "736", @@ -117032,24 +122393,6 @@ "virtual_address": "4553392" } }, - { - "name": "func_00457AF8", - "size": "168", - "fuzzy_match_percent": 0.0, - "address": "31240", - "metadata": { - "virtual_address": "4553464" - } - }, - { - "name": "func_00457BA0", - "size": "224", - "fuzzy_match_percent": 0.0, - "address": "31408", - "metadata": { - "virtual_address": "4553632" - } - }, { "name": "func_00457C80", "size": "12", @@ -117059,33 +122402,6 @@ "virtual_address": "4553856" } }, - { - "name": "func_00457CF0", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "31744", - "metadata": { - "virtual_address": "4553968" - } - }, - { - "name": "func_00457DA8", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "31928", - "metadata": { - "virtual_address": "4554152" - } - }, - { - "name": "func_00457E60", - "size": "52", - "fuzzy_match_percent": 0.0, - "address": "32112", - "metadata": { - "virtual_address": "4554336" - } - }, { "name": "func_00457E98", "size": "28", @@ -117176,15 +122492,6 @@ "virtual_address": "4558448" } }, - { - "name": "func_00458E88", - "size": "112", - "fuzzy_match_percent": 0.0, - "address": "36248", - "metadata": { - "virtual_address": "4558472" - } - }, { "name": "func_00458EF8", "size": "20", @@ -117374,15 +122681,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", @@ -117428,15 +122726,6 @@ "virtual_address": "4576944" } }, - { - "name": "func_0045D6C0", - "size": "188", - "fuzzy_match_percent": 0.0, - "address": "54736", - "metadata": { - "virtual_address": "4576960" - } - }, { "name": "func_0045D780", "size": "268", @@ -117473,15 +122762,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", @@ -117653,15 +122933,6 @@ "virtual_address": "4583264" } }, - { - "name": "func_0045F078", - "size": "352", - "fuzzy_match_percent": 0.0, - "address": "61320", - "metadata": { - "virtual_address": "4583544" - } - }, { "name": "func_0045F1D8", "size": "4", @@ -117793,10 +123064,10 @@ "name": "main/.text/0046xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "57160", + "total_code": "55540", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 192, + "total_functions": 185, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -118120,15 +123391,6 @@ "virtual_address": "4600504" } }, - { - "name": "func_004635A8", - "size": "276", - "fuzzy_match_percent": 0.0, - "address": "13176", - "metadata": { - "virtual_address": "4601256" - } - }, { "name": "func_004636C0", "size": "824", @@ -118318,15 +123580,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 +123598,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", @@ -118390,15 +123634,6 @@ "virtual_address": "4612216" } }, - { - "name": "func_00466128", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "24312", - "metadata": { - "virtual_address": "4612392" - } - }, { "name": "func_004662E8", "size": "12", @@ -118516,24 +123751,6 @@ "virtual_address": "4625160" } }, - { - "name": "func_004694C8", - "size": "60", - "fuzzy_match_percent": 0.0, - "address": "37528", - "metadata": { - "virtual_address": "4625608" - } - }, - { - "name": "func_00469508", - "size": "276", - "fuzzy_match_percent": 0.0, - "address": "37592", - "metadata": { - "virtual_address": "4625672" - } - }, { "name": "func_00469620", "size": "196", @@ -119191,15 +124408,6 @@ "virtual_address": "4642200" } }, - { - "name": "func_0046D780", - "size": "552", - "fuzzy_match_percent": 0.0, - "address": "54608", - "metadata": { - "virtual_address": "4642688" - } - }, { "name": "func_0046DA78", "size": "260", @@ -119546,11 +124754,11 @@ { "name": "main/.text/0047xxxx", "measures": { - "fuzzy_match_percent": 0.385776, - "total_code": "59100", + "fuzzy_match_percent": 0.196424, + "total_code": "58036", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 179, + "total_functions": 173, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -119757,15 +124965,6 @@ "virtual_address": "4665464" } }, - { - "name": "func_004730F8", - "size": "152", - "fuzzy_match_percent": 0.0, - "address": "12400", - "metadata": { - "virtual_address": "4665592" - } - }, { "name": "func_004732B8", "size": "2640", @@ -119919,15 +125118,6 @@ "virtual_address": "4671896" } }, - { - "name": "func_004749A0", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "18712", - "metadata": { - "virtual_address": "4671904" - } - }, { "name": "func_00474A70", "size": "244", @@ -120180,15 +125370,6 @@ "virtual_address": "4678984" } }, - { - "name": "func_00476678", - "size": "348", - "fuzzy_match_percent": 0.0, - "address": "26096", - "metadata": { - "virtual_address": "4679288" - } - }, { "name": "func_004767D8", "size": "4", @@ -120216,24 +125397,6 @@ "virtual_address": "4680248" } }, - { - "name": "func_00476D30", - "size": "100", - "fuzzy_match_percent": 0.0, - "address": "27816", - "metadata": { - "virtual_address": "4681008" - } - }, - { - "name": "func_00476DF8", - "size": "132", - "fuzzy_match_percent": 0.0, - "address": "28016", - "metadata": { - "virtual_address": "4681208" - } - }, { "name": "func_00476E80", "size": "12", @@ -120585,15 +125748,6 @@ "virtual_address": "4692920" } }, - { - "name": "func_00479E28", - "size": "128", - "fuzzy_match_percent": 89.06, - "address": "40352", - "metadata": { - "virtual_address": "4693544" - } - }, { "name": "func_00479EA8", "size": "12", @@ -121183,11 +126337,11 @@ { "name": "main/.text/0048xxxx", "measures": { - "fuzzy_match_percent": 0.261753, - "total_code": "61508", + "fuzzy_match_percent": 0.264818, + "total_code": "60796", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 115, + "total_functions": 111, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -121367,15 +126521,6 @@ "virtual_address": "4738288" } }, - { - "name": "func_00484EB0", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "19968", - "metadata": { - "virtual_address": "4738736" - } - }, { "name": "func_00484F88", "size": "200", @@ -121682,15 +126827,6 @@ "virtual_address": "4762192" } }, - { - "name": "func_0048AA58", - "size": "188", - "fuzzy_match_percent": 0.0, - "address": "43432", - "metadata": { - "virtual_address": "4762200" - } - }, { "name": "func_0048AC28", "size": "192", @@ -121718,15 +126854,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", @@ -121889,15 +127016,6 @@ "virtual_address": "4768504" } }, - { - "name": "func_0048C420", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "50032", - "metadata": { - "virtual_address": "4768800" - } - }, { "name": "func_0048C508", "size": "228", @@ -122244,11 +127362,11 @@ { "name": "main/.text/0049xxxx", "measures": { - "fuzzy_match_percent": 0.384405, - "total_code": "51248", + "fuzzy_match_percent": 0.388254, + "total_code": "50740", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 184, + "total_functions": 181, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -123040,15 +128158,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", @@ -123301,15 +128410,6 @@ "virtual_address": "4821152" } }, - { - "name": "func_00499120", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "36456", - "metadata": { - "virtual_address": "4821280" - } - }, { "name": "func_004991F0", "size": "132", @@ -123859,15 +128959,6 @@ "virtual_address": "4845176" } }, - { - "name": "func_0049F120", - "size": "144", - "fuzzy_match_percent": 0.0, - "address": "61032", - "metadata": { - "virtual_address": "4845856" - } - }, { "name": "func_0049F1B0", "size": "252", @@ -123927,10 +129018,10 @@ "name": "main/.text/004Axxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "52600", + "total_code": "51748", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 129, + "total_functions": 124, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -124173,15 +129264,6 @@ "virtual_address": "4860840" } }, - { - "name": "func_004A2D58", - "size": "168", - "fuzzy_match_percent": 0.0, - "address": "11568", - "metadata": { - "virtual_address": "4861272" - } - }, { "name": "func_004A2E90", "size": "340", @@ -124533,15 +129615,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", @@ -124569,15 +129642,6 @@ "virtual_address": "4886944" } }, - { - "name": "func_004A9288", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "37472", - "metadata": { - "virtual_address": "4887176" - } - }, { "name": "func_004A9370", "size": "224", @@ -124695,15 +129759,6 @@ "virtual_address": "4891360" } }, - { - "name": "func_004AA638", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "42512", - "metadata": { - "virtual_address": "4892216" - } - }, { "name": "func_004AA708", "size": "620", @@ -124956,15 +130011,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 +130159,11 @@ { "name": "main/.text/004Bxxxx", "measures": { - "fuzzy_match_percent": 1.621818, - "total_code": "49204", + "fuzzy_match_percent": 1.673095, + "total_code": "47696", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 138, + "total_functions": 130, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -125126,20 +130172,11 @@ "complete_units": 0 }, "functions": [ - { - "name": "func_004B0028", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "0", - "metadata": { - "virtual_address": "4915240" - } - }, { "name": "func_004B0110", "size": "184", "fuzzy_match_percent": 0.0, - "address": "232", + "address": "0", "metadata": { "virtual_address": "4915472" } @@ -125148,7 +130185,7 @@ "name": "func_004B01C8", "size": "460", "fuzzy_match_percent": 0.0, - "address": "416", + "address": "184", "metadata": { "virtual_address": "4915656" } @@ -125157,7 +130194,7 @@ "name": "func_004B0398", "size": "520", "fuzzy_match_percent": 0.0, - "address": "880", + "address": "648", "metadata": { "virtual_address": "4916120" } @@ -125166,25 +130203,16 @@ "name": "func_004B05C0", "size": "12", "fuzzy_match_percent": 0.0, - "address": "1432", + "address": "1200", "metadata": { "virtual_address": "4916672" } }, - { - "name": "func_004B0BB0", - "size": "148", - "fuzzy_match_percent": 0.0, - "address": "2952", - "metadata": { - "virtual_address": "4918192" - } - }, { "name": "func_004B0D40", "size": "132", "fuzzy_match_percent": 0.0, - "address": "3352", + "address": "3120", "metadata": { "virtual_address": "4918592" } @@ -125193,7 +130221,7 @@ "name": "func_004B0F60", "size": "136", "fuzzy_match_percent": 0.0, - "address": "3896", + "address": "3664", "metadata": { "virtual_address": "4919136" } @@ -125202,7 +130230,7 @@ "name": "func_004B1080", "size": "160", "fuzzy_match_percent": 0.0, - "address": "4184", + "address": "3952", "metadata": { "virtual_address": "4919424" } @@ -125211,7 +130239,7 @@ "name": "func_004B1120", "size": "1152", "fuzzy_match_percent": 0.0, - "address": "4344", + "address": "4112", "metadata": { "virtual_address": "4919584" } @@ -125220,7 +130248,7 @@ "name": "func_004B15A0", "size": "608", "fuzzy_match_percent": 0.0, - "address": "5496", + "address": "5264", "metadata": { "virtual_address": "4920736" } @@ -125229,7 +130257,7 @@ "name": "func_004B1890", "size": "232", "fuzzy_match_percent": 0.0, - "address": "6248", + "address": "6016", "metadata": { "virtual_address": "4921488" } @@ -125238,7 +130266,7 @@ "name": "func_004B1978", "size": "560", "fuzzy_match_percent": 0.0, - "address": "6480", + "address": "6248", "metadata": { "virtual_address": "4921720" } @@ -125247,7 +130275,7 @@ "name": "func_004B1BA8", "size": "392", "fuzzy_match_percent": 0.0, - "address": "7040", + "address": "6808", "metadata": { "virtual_address": "4922280" } @@ -125256,7 +130284,7 @@ "name": "func_004B1D78", "size": "28", "fuzzy_match_percent": 0.0, - "address": "7504", + "address": "7272", "metadata": { "virtual_address": "4922744" } @@ -125265,7 +130293,7 @@ "name": "func_004B2048", "size": "128", "fuzzy_match_percent": 0.0, - "address": "8224", + "address": "7992", "metadata": { "virtual_address": "4923464" } @@ -125274,7 +130302,7 @@ "name": "func_004B20F0", "size": "904", "fuzzy_match_percent": 0.0, - "address": "8392", + "address": "8160", "metadata": { "virtual_address": "4923632" } @@ -125283,25 +130311,16 @@ "name": "func_004B2478", "size": "140", "fuzzy_match_percent": 0.0, - "address": "9296", + "address": "9064", "metadata": { "virtual_address": "4924536" } }, - { - "name": "func_004B2508", - "size": "224", - "fuzzy_match_percent": 0.0, - "address": "9440", - "metadata": { - "virtual_address": "4924680" - } - }, { "name": "func_004B25E8", "size": "244", "fuzzy_match_percent": 0.0, - "address": "9664", + "address": "9432", "metadata": { "virtual_address": "4924904" } @@ -125310,7 +130329,7 @@ "name": "func_004B26E0", "size": "1768", "fuzzy_match_percent": 0.0, - "address": "9912", + "address": "9680", "metadata": { "virtual_address": "4925152" } @@ -125319,7 +130338,7 @@ "name": "func_004B2DC8", "size": "508", "fuzzy_match_percent": 95.08, - "address": "11680", + "address": "11448", "metadata": { "virtual_address": "4926920" } @@ -125328,25 +130347,16 @@ "name": "func_004B2FE8", "size": "4", "fuzzy_match_percent": 0.0, - "address": "12224", + "address": "11992", "metadata": { "virtual_address": "4927464" } }, - { - "name": "func_004B3050", - "size": "160", - "fuzzy_match_percent": 0.0, - "address": "12328", - "metadata": { - "virtual_address": "4927568" - } - }, { "name": "func_004B31D8", "size": "524", "fuzzy_match_percent": 0.0, - "address": "12720", + "address": "12488", "metadata": { "virtual_address": "4927960" } @@ -125355,7 +130365,7 @@ "name": "func_004B33E8", "size": "236", "fuzzy_match_percent": 0.0, - "address": "13248", + "address": "13016", "metadata": { "virtual_address": "4928488" } @@ -125364,7 +130374,7 @@ "name": "func_004B34D8", "size": "220", "fuzzy_match_percent": 0.0, - "address": "13488", + "address": "13256", "metadata": { "virtual_address": "4928728" } @@ -125373,7 +130383,7 @@ "name": "func_004B35B8", "size": "740", "fuzzy_match_percent": 0.0, - "address": "13712", + "address": "13480", "metadata": { "virtual_address": "4928952" } @@ -125382,7 +130392,7 @@ "name": "func_004B38A0", "size": "256", "fuzzy_match_percent": 0.0, - "address": "14456", + "address": "14224", "metadata": { "virtual_address": "4929696" } @@ -125391,7 +130401,7 @@ "name": "func_004B39A0", "size": "252", "fuzzy_match_percent": 0.0, - "address": "14712", + "address": "14480", "metadata": { "virtual_address": "4929952" } @@ -125400,7 +130410,7 @@ "name": "func_004B3B48", "size": "392", "fuzzy_match_percent": 0.0, - "address": "15136", + "address": "14904", "metadata": { "virtual_address": "4930376" } @@ -125409,7 +130419,7 @@ "name": "func_004B3CD0", "size": "228", "fuzzy_match_percent": 0.0, - "address": "15528", + "address": "15296", "metadata": { "virtual_address": "4930768" } @@ -125418,7 +130428,7 @@ "name": "func_004B3E20", "size": "628", "fuzzy_match_percent": 0.0, - "address": "15864", + "address": "15632", "metadata": { "virtual_address": "4931104" } @@ -125427,7 +130437,7 @@ "name": "func_004B4098", "size": "1260", "fuzzy_match_percent": 0.0, - "address": "16496", + "address": "16264", "metadata": { "virtual_address": "4931736" } @@ -125436,7 +130446,7 @@ "name": "func_004B4588", "size": "1256", "fuzzy_match_percent": 0.0, - "address": "17760", + "address": "17528", "metadata": { "virtual_address": "4933000" } @@ -125445,7 +130455,7 @@ "name": "func_004B4A70", "size": "568", "fuzzy_match_percent": 0.0, - "address": "19016", + "address": "18784", "metadata": { "virtual_address": "4934256" } @@ -125454,7 +130464,7 @@ "name": "func_004B4DC0", "size": "340", "fuzzy_match_percent": 0.0, - "address": "19864", + "address": "19632", "metadata": { "virtual_address": "4935104" } @@ -125463,7 +130473,7 @@ "name": "func_004B4F18", "size": "420", "fuzzy_match_percent": 0.0, - "address": "20208", + "address": "19976", "metadata": { "virtual_address": "4935448" } @@ -125472,7 +130482,7 @@ "name": "func_004B50C0", "size": "332", "fuzzy_match_percent": 0.0, - "address": "20632", + "address": "20400", "metadata": { "virtual_address": "4935872" } @@ -125481,25 +130491,16 @@ "name": "func_004B5210", "size": "1824", "fuzzy_match_percent": 0.0, - "address": "20968", + "address": "20736", "metadata": { "virtual_address": "4936208" } }, - { - "name": "func_004B5988", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "22880", - "metadata": { - "virtual_address": "4938120" - } - }, { "name": "func_004B5A70", "size": "228", "fuzzy_match_percent": 0.0, - "address": "23112", + "address": "22880", "metadata": { "virtual_address": "4938352" } @@ -125508,7 +130509,7 @@ "name": "func_004B5B78", "size": "4", "fuzzy_match_percent": 0.0, - "address": "23376", + "address": "23144", "metadata": { "virtual_address": "4938616" } @@ -125517,7 +130518,7 @@ "name": "func_004B5D38", "size": "140", "fuzzy_match_percent": 0.0, - "address": "23824", + "address": "23592", "metadata": { "virtual_address": "4939064" } @@ -125526,25 +130527,16 @@ "name": "func_004B5E30", "size": "320", "fuzzy_match_percent": 0.0, - "address": "24072", + "address": "23840", "metadata": { "virtual_address": "4939312" } }, - { - "name": "func_004B5F70", - "size": "180", - "fuzzy_match_percent": 0.0, - "address": "24392", - "metadata": { - "virtual_address": "4939632" - } - }, { "name": "func_004B6028", "size": "276", "fuzzy_match_percent": 0.0, - "address": "24576", + "address": "24344", "metadata": { "virtual_address": "4939816" } @@ -125553,7 +130545,7 @@ "name": "func_004B6140", "size": "300", "fuzzy_match_percent": 0.0, - "address": "24856", + "address": "24624", "metadata": { "virtual_address": "4940096" } @@ -125562,7 +130554,7 @@ "name": "func_004B6280", "size": "188", "fuzzy_match_percent": 0.0, - "address": "25176", + "address": "24944", "metadata": { "virtual_address": "4940416" } @@ -125571,7 +130563,7 @@ "name": "func_004B6360", "size": "4", "fuzzy_match_percent": 0.0, - "address": "25400", + "address": "25168", "metadata": { "virtual_address": "4940640" } @@ -125580,7 +130572,7 @@ "name": "func_004B63C8", "size": "120", "fuzzy_match_percent": 0.0, - "address": "25504", + "address": "25272", "metadata": { "virtual_address": "4940744" } @@ -125589,25 +130581,16 @@ "name": "func_004B64A0", "size": "260", "fuzzy_match_percent": 0.0, - "address": "25720", + "address": "25488", "metadata": { "virtual_address": "4940960" } }, - { - "name": "func_004B65E8", - "size": "196", - "fuzzy_match_percent": 0.0, - "address": "26048", - "metadata": { - "virtual_address": "4941288" - } - }, { "name": "func_004B66B0", "size": "432", "fuzzy_match_percent": 0.0, - "address": "26248", + "address": "26016", "metadata": { "virtual_address": "4941488" } @@ -125616,7 +130599,7 @@ "name": "func_004B6880", "size": "36", "fuzzy_match_percent": 0.0, - "address": "26712", + "address": "26480", "metadata": { "virtual_address": "4941952" } @@ -125625,7 +130608,7 @@ "name": "func_004B68A8", "size": "164", "fuzzy_match_percent": 0.0, - "address": "26752", + "address": "26520", "metadata": { "virtual_address": "4941992" } @@ -125634,7 +130617,7 @@ "name": "func_004B6950", "size": "192", "fuzzy_match_percent": 0.0, - "address": "26920", + "address": "26688", "metadata": { "virtual_address": "4942160" } @@ -125643,7 +130626,7 @@ "name": "func_004B6A10", "size": "192", "fuzzy_match_percent": 0.0, - "address": "27112", + "address": "26880", "metadata": { "virtual_address": "4942352" } @@ -125652,7 +130635,7 @@ "name": "func_004B6AD0", "size": "192", "fuzzy_match_percent": 0.0, - "address": "27304", + "address": "27072", "metadata": { "virtual_address": "4942544" } @@ -125661,7 +130644,7 @@ "name": "func_004B6B90", "size": "200", "fuzzy_match_percent": 0.0, - "address": "27496", + "address": "27264", "metadata": { "virtual_address": "4942736" } @@ -125670,7 +130653,7 @@ "name": "func_004B6C58", "size": "144", "fuzzy_match_percent": 0.0, - "address": "27696", + "address": "27464", "metadata": { "virtual_address": "4942936" } @@ -125679,7 +130662,7 @@ "name": "func_004B6D60", "size": "260", "fuzzy_match_percent": 0.0, - "address": "27960", + "address": "27728", "metadata": { "virtual_address": "4943200" } @@ -125688,7 +130671,7 @@ "name": "func_004B6EE0", "size": "900", "fuzzy_match_percent": 0.0, - "address": "28344", + "address": "28112", "metadata": { "virtual_address": "4943584" } @@ -125697,7 +130680,7 @@ "name": "func_004B7268", "size": "604", "fuzzy_match_percent": 0.0, - "address": "29248", + "address": "29016", "metadata": { "virtual_address": "4944488" } @@ -125706,7 +130689,7 @@ "name": "func_004B74C8", "size": "356", "fuzzy_match_percent": 0.0, - "address": "29856", + "address": "29624", "metadata": { "virtual_address": "4945096" } @@ -125715,7 +130698,7 @@ "name": "func_004B7778", "size": "200", "fuzzy_match_percent": 0.0, - "address": "30544", + "address": "30312", "metadata": { "virtual_address": "4945784" } @@ -125724,7 +130707,7 @@ "name": "func_004B7A90", "size": "4", "fuzzy_match_percent": 0.0, - "address": "31336", + "address": "31104", "metadata": { "virtual_address": "4946576" } @@ -125733,25 +130716,16 @@ "name": "func_004B7C48", "size": "164", "fuzzy_match_percent": 0.0, - "address": "31776", + "address": "31544", "metadata": { "virtual_address": "4947016" } }, - { - "name": "func_004B85B0", - "size": "140", - "fuzzy_match_percent": 0.0, - "address": "34184", - "metadata": { - "virtual_address": "4949424" - } - }, { "name": "func_004B8640", "size": "156", "fuzzy_match_percent": 0.0, - "address": "34328", + "address": "34096", "metadata": { "virtual_address": "4949568" } @@ -125760,7 +130734,7 @@ "name": "func_004B86E0", "size": "156", "fuzzy_match_percent": 0.0, - "address": "34488", + "address": "34256", "metadata": { "virtual_address": "4949728" } @@ -125769,7 +130743,7 @@ "name": "func_004B8780", "size": "212", "fuzzy_match_percent": 0.0, - "address": "34648", + "address": "34416", "metadata": { "virtual_address": "4949888" } @@ -125778,7 +130752,7 @@ "name": "func_004B8858", "size": "140", "fuzzy_match_percent": 0.0, - "address": "34864", + "address": "34632", "metadata": { "virtual_address": "4950104" } @@ -125787,7 +130761,7 @@ "name": "func_004B88E8", "size": "108", "fuzzy_match_percent": 94.44, - "address": "35008", + "address": "34776", "metadata": { "virtual_address": "4950248" } @@ -125796,7 +130770,7 @@ "name": "func_004B8958", "size": "240", "fuzzy_match_percent": 0.0, - "address": "35120", + "address": "34888", "metadata": { "virtual_address": "4950360" } @@ -125805,7 +130779,7 @@ "name": "func_004B8D68", "size": "444", "fuzzy_match_percent": 0.0, - "address": "36160", + "address": "35928", "metadata": { "virtual_address": "4951400" } @@ -125814,7 +130788,7 @@ "name": "func_004B9048", "size": "624", "fuzzy_match_percent": 0.0, - "address": "36896", + "address": "36664", "metadata": { "virtual_address": "4952136" } @@ -125823,7 +130797,7 @@ "name": "func_004B92B8", "size": "264", "fuzzy_match_percent": 0.0, - "address": "37520", + "address": "37288", "metadata": { "virtual_address": "4952760" } @@ -125832,7 +130806,7 @@ "name": "func_004B93C0", "size": "264", "fuzzy_match_percent": 0.0, - "address": "37784", + "address": "37552", "metadata": { "virtual_address": "4953024" } @@ -125841,7 +130815,7 @@ "name": "func_004B94C8", "size": "428", "fuzzy_match_percent": 0.0, - "address": "38048", + "address": "37816", "metadata": { "virtual_address": "4953288" } @@ -125850,7 +130824,7 @@ "name": "func_004B9678", "size": "256", "fuzzy_match_percent": 0.0, - "address": "38480", + "address": "38248", "metadata": { "virtual_address": "4953720" } @@ -125859,7 +130833,7 @@ "name": "func_004B9818", "size": "184", "fuzzy_match_percent": 51.63, - "address": "38896", + "address": "38664", "metadata": { "virtual_address": "4954136" } @@ -125868,7 +130842,7 @@ "name": "func_004B98D0", "size": "200", "fuzzy_match_percent": 0.0, - "address": "39080", + "address": "38848", "metadata": { "virtual_address": "4954320" } @@ -125877,7 +130851,7 @@ "name": "func_004B9A10", "size": "104", "fuzzy_match_percent": 0.0, - "address": "39400", + "address": "39168", "metadata": { "virtual_address": "4954640" } @@ -125886,7 +130860,7 @@ "name": "func_004B9A78", "size": "152", "fuzzy_match_percent": 0.0, - "address": "39504", + "address": "39272", "metadata": { "virtual_address": "4954744" } @@ -125895,7 +130869,7 @@ "name": "func_004B9B40", "size": "884", "fuzzy_match_percent": 0.0, - "address": "39704", + "address": "39472", "metadata": { "virtual_address": "4954944" } @@ -125904,7 +130878,7 @@ "name": "func_004B9ED8", "size": "4", "fuzzy_match_percent": 0.0, - "address": "40624", + "address": "40392", "metadata": { "virtual_address": "4955864" } @@ -125913,7 +130887,7 @@ "name": "func_004BA0F8", "size": "52", "fuzzy_match_percent": 0.0, - "address": "41168", + "address": "40936", "metadata": { "virtual_address": "4956408" } @@ -125922,7 +130896,7 @@ "name": "func_004BA130", "size": "236", "fuzzy_match_percent": 0.0, - "address": "41224", + "address": "40992", "metadata": { "virtual_address": "4956464" } @@ -125931,7 +130905,7 @@ "name": "func_004BA220", "size": "124", "fuzzy_match_percent": 95.16, - "address": "41464", + "address": "41232", "metadata": { "virtual_address": "4956704" } @@ -125940,7 +130914,7 @@ "name": "func_004BA2A0", "size": "140", "fuzzy_match_percent": 0.0, - "address": "41592", + "address": "41360", "metadata": { "virtual_address": "4956832" } @@ -125949,7 +130923,7 @@ "name": "func_004BA330", "size": "284", "fuzzy_match_percent": 0.0, - "address": "41736", + "address": "41504", "metadata": { "virtual_address": "4956976" } @@ -125958,7 +130932,7 @@ "name": "func_004BA498", "size": "256", "fuzzy_match_percent": 0.0, - "address": "42096", + "address": "41864", "metadata": { "virtual_address": "4957336" } @@ -125967,7 +130941,7 @@ "name": "func_004BA598", "size": "764", "fuzzy_match_percent": 0.0, - "address": "42352", + "address": "42120", "metadata": { "virtual_address": "4957592" } @@ -125976,7 +130950,7 @@ "name": "func_004BA8B8", "size": "4", "fuzzy_match_percent": 0.0, - "address": "43152", + "address": "42920", "metadata": { "virtual_address": "4958392" } @@ -125985,7 +130959,7 @@ "name": "func_004BAAD8", "size": "524", "fuzzy_match_percent": 0.0, - "address": "43696", + "address": "43464", "metadata": { "virtual_address": "4958936" } @@ -125994,7 +130968,7 @@ "name": "func_004BADA0", "size": "416", "fuzzy_match_percent": 0.0, - "address": "44408", + "address": "44176", "metadata": { "virtual_address": "4959648" } @@ -126003,7 +130977,7 @@ "name": "func_004BB038", "size": "248", "fuzzy_match_percent": 0.0, - "address": "45072", + "address": "44840", "metadata": { "virtual_address": "4960312" } @@ -126012,7 +130986,7 @@ "name": "func_004BB130", "size": "248", "fuzzy_match_percent": 0.0, - "address": "45320", + "address": "45088", "metadata": { "virtual_address": "4960560" } @@ -126021,7 +130995,7 @@ "name": "func_004BB2A0", "size": "4", "fuzzy_match_percent": 0.0, - "address": "45688", + "address": "45456", "metadata": { "virtual_address": "4960928" } @@ -126030,7 +131004,7 @@ "name": "func_004BB320", "size": "248", "fuzzy_match_percent": 0.0, - "address": "45816", + "address": "45584", "metadata": { "virtual_address": "4961056" } @@ -126039,7 +131013,7 @@ "name": "func_004BB438", "size": "184", "fuzzy_match_percent": 0.0, - "address": "46096", + "address": "45864", "metadata": { "virtual_address": "4961336" } @@ -126048,7 +131022,7 @@ "name": "func_004BB4F0", "size": "200", "fuzzy_match_percent": 0.0, - "address": "46280", + "address": "46048", "metadata": { "virtual_address": "4961520" } @@ -126057,7 +131031,7 @@ "name": "func_004BB638", "size": "100", "fuzzy_match_percent": 0.0, - "address": "46608", + "address": "46376", "metadata": { "virtual_address": "4961848" } @@ -126066,7 +131040,7 @@ "name": "func_004BB6A0", "size": "160", "fuzzy_match_percent": 0.0, - "address": "46712", + "address": "46480", "metadata": { "virtual_address": "4961952" } @@ -126075,7 +131049,7 @@ "name": "func_004BB770", "size": "832", "fuzzy_match_percent": 0.0, - "address": "46920", + "address": "46688", "metadata": { "virtual_address": "4962160" } @@ -126084,7 +131058,7 @@ "name": "func_004BBAD0", "size": "4", "fuzzy_match_percent": 0.0, - "address": "47784", + "address": "47552", "metadata": { "virtual_address": "4963024" } @@ -126093,7 +131067,7 @@ "name": "func_004BBB88", "size": "4", "fuzzy_match_percent": 0.0, - "address": "47968", + "address": "47736", "metadata": { "virtual_address": "4963208" } @@ -126102,7 +131076,7 @@ "name": "func_004BBD08", "size": "172", "fuzzy_match_percent": 0.0, - "address": "48352", + "address": "48120", "metadata": { "virtual_address": "4963592" } @@ -126111,7 +131085,7 @@ "name": "func_004BBF50", "size": "428", "fuzzy_match_percent": 0.0, - "address": "48936", + "address": "48704", "metadata": { "virtual_address": "4964176" } @@ -126120,7 +131094,7 @@ "name": "func_004BC100", "size": "348", "fuzzy_match_percent": 0.0, - "address": "49368", + "address": "49136", "metadata": { "virtual_address": "4964608" } @@ -126129,7 +131103,7 @@ "name": "func_004BC260", "size": "696", "fuzzy_match_percent": 0.0, - "address": "49720", + "address": "49488", "metadata": { "virtual_address": "4964960" } @@ -126138,7 +131112,7 @@ "name": "func_004BC518", "size": "156", "fuzzy_match_percent": 0.0, - "address": "50416", + "address": "50184", "metadata": { "virtual_address": "4965656" } @@ -126147,7 +131121,7 @@ "name": "func_004BC5B8", "size": "360", "fuzzy_match_percent": 0.0, - "address": "50576", + "address": "50344", "metadata": { "virtual_address": "4965816" } @@ -126156,7 +131130,7 @@ "name": "func_004BC758", "size": "140", "fuzzy_match_percent": 0.0, - "address": "50992", + "address": "50760", "metadata": { "virtual_address": "4966232" } @@ -126165,7 +131139,7 @@ "name": "func_004BC970", "size": "120", "fuzzy_match_percent": 0.0, - "address": "51528", + "address": "51296", "metadata": { "virtual_address": "4966768" } @@ -126174,7 +131148,7 @@ "name": "func_004BCA50", "size": "1752", "fuzzy_match_percent": 0.0, - "address": "51752", + "address": "51520", "metadata": { "virtual_address": "4966992" } @@ -126183,7 +131157,7 @@ "name": "func_004BD128", "size": "628", "fuzzy_match_percent": 0.0, - "address": "53504", + "address": "53272", "metadata": { "virtual_address": "4968744" } @@ -126192,7 +131166,7 @@ "name": "func_004BD3A0", "size": "972", "fuzzy_match_percent": 0.0, - "address": "54136", + "address": "53904", "metadata": { "virtual_address": "4969376" } @@ -126201,7 +131175,7 @@ "name": "func_004BD810", "size": "204", "fuzzy_match_percent": 0.0, - "address": "55272", + "address": "55040", "metadata": { "virtual_address": "4970512" } @@ -126210,7 +131184,7 @@ "name": "func_004BD8E0", "size": "176", "fuzzy_match_percent": 0.0, - "address": "55480", + "address": "55248", "metadata": { "virtual_address": "4970720" } @@ -126219,7 +131193,7 @@ "name": "func_004BD990", "size": "176", "fuzzy_match_percent": 0.0, - "address": "55656", + "address": "55424", "metadata": { "virtual_address": "4970896" } @@ -126228,7 +131202,7 @@ "name": "func_004BDA40", "size": "484", "fuzzy_match_percent": 0.0, - "address": "55832", + "address": "55600", "metadata": { "virtual_address": "4971072" } @@ -126237,7 +131211,7 @@ "name": "func_004BDC98", "size": "476", "fuzzy_match_percent": 0.0, - "address": "56432", + "address": "56200", "metadata": { "virtual_address": "4971672" } @@ -126246,7 +131220,7 @@ "name": "func_004BDE78", "size": "48", "fuzzy_match_percent": 0.0, - "address": "56912", + "address": "56680", "metadata": { "virtual_address": "4972152" } @@ -126255,7 +131229,7 @@ "name": "func_004BDF28", "size": "732", "fuzzy_match_percent": 0.0, - "address": "57088", + "address": "56856", "metadata": { "virtual_address": "4972328" } @@ -126264,7 +131238,7 @@ "name": "func_004BE260", "size": "4", "fuzzy_match_percent": 0.0, - "address": "57912", + "address": "57680", "metadata": { "virtual_address": "4973152" } @@ -126273,7 +131247,7 @@ "name": "func_004BE3B8", "size": "308", "fuzzy_match_percent": 0.0, - "address": "58256", + "address": "58024", "metadata": { "virtual_address": "4973496" } @@ -126282,7 +131256,7 @@ "name": "func_004BE580", "size": "348", "fuzzy_match_percent": 0.0, - "address": "58712", + "address": "58480", "metadata": { "virtual_address": "4973952" } @@ -126291,7 +131265,7 @@ "name": "func_004BE6E0", "size": "156", "fuzzy_match_percent": 0.0, - "address": "59064", + "address": "58832", "metadata": { "virtual_address": "4974304" } @@ -126300,7 +131274,7 @@ "name": "func_004BE808", "size": "772", "fuzzy_match_percent": 0.0, - "address": "59360", + "address": "59128", "metadata": { "virtual_address": "4974600" } @@ -126309,7 +131283,7 @@ "name": "func_004BEBF8", "size": "620", "fuzzy_match_percent": 0.0, - "address": "60368", + "address": "60136", "metadata": { "virtual_address": "4975608" } @@ -126318,7 +131292,7 @@ "name": "func_004BEE68", "size": "820", "fuzzy_match_percent": 0.0, - "address": "60992", + "address": "60760", "metadata": { "virtual_address": "4976232" } @@ -126327,7 +131301,7 @@ "name": "func_004BF1A0", "size": "1280", "fuzzy_match_percent": 0.0, - "address": "61816", + "address": "61584", "metadata": { "virtual_address": "4977056" } @@ -126336,7 +131310,7 @@ "name": "func_004BF6A0", "size": "1308", "fuzzy_match_percent": 0.0, - "address": "63096", + "address": "62864", "metadata": { "virtual_address": "4978336" } @@ -126345,7 +131319,7 @@ "name": "func_004BFBC0", "size": "264", "fuzzy_match_percent": 0.0, - "address": "64408", + "address": "64176", "metadata": { "virtual_address": "4979648" } @@ -126354,7 +131328,7 @@ "name": "func_004BFCC8", "size": "136", "fuzzy_match_percent": 0.0, - "address": "64672", + "address": "64440", "metadata": { "virtual_address": "4979912" } @@ -126363,7 +131337,7 @@ "name": "func_004BFFB0", "size": "132", "fuzzy_match_percent": 0.0, - "address": "65416", + "address": "65184", "metadata": { "virtual_address": "4980656" } @@ -126381,11 +131355,11 @@ { "name": "main/.text/004Cxxxx", "measures": { - "fuzzy_match_percent": 0.333493, - "total_code": "52476", + "fuzzy_match_percent": 0.348447, + "total_code": "50224", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 135, + "total_functions": 124, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -126619,15 +131593,6 @@ "virtual_address": "4993720" } }, - { - "name": "func_004C3380", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "13128", - "metadata": { - "virtual_address": "4993920" - } - }, { "name": "func_004C3438", "size": "320", @@ -126673,15 +131638,6 @@ "virtual_address": "4996112" } }, - { - "name": "func_004C3E20", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "15848", - "metadata": { - "virtual_address": "4996640" - } - }, { "name": "func_004C3F68", "size": "104", @@ -126700,15 +131656,6 @@ "virtual_address": "4997072" } }, - { - "name": "func_004C4078", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "16448", - "metadata": { - "virtual_address": "4997240" - } - }, { "name": "func_004C4138", "size": "192", @@ -126736,15 +131683,6 @@ "virtual_address": "4997888" } }, - { - "name": "func_004C4648", - "size": "196", - "fuzzy_match_percent": 0.0, - "address": "17936", - "metadata": { - "virtual_address": "4998728" - } - }, { "name": "func_004C4710", "size": "156", @@ -126988,15 +131926,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", @@ -127078,15 +132007,6 @@ "virtual_address": "5018824" } }, - { - "name": "func_004C9590", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "38232", - "metadata": { - "virtual_address": "5019024" - } - }, { "name": "func_004C9658", "size": "816", @@ -127231,15 +132151,6 @@ "virtual_address": "5027712" } }, - { - "name": "func_004CB7E0", - "size": "260", - "fuzzy_match_percent": 0.0, - "address": "47016", - "metadata": { - "virtual_address": "5027808" - } - }, { "name": "func_004CB8E8", "size": "1140", @@ -127348,15 +132259,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 +132304,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", @@ -127420,15 +132313,6 @@ "virtual_address": "5036680" } }, - { - "name": "func_004CDB70", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "56120", - "metadata": { - "virtual_address": "5036912" - } - }, { "name": "func_004CDC60", "size": "176", @@ -127555,15 +132439,6 @@ "virtual_address": "5043456" } }, - { - "name": "func_004CFA08", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "63952", - "metadata": { - "virtual_address": "5044744" - } - }, { "name": "func_004CFAF0", "size": "288", @@ -127622,11 +132497,11 @@ { "name": "main/.text/004Dxxxx", "measures": { - "fuzzy_match_percent": 0.966038, - "total_code": "45548", + "fuzzy_match_percent": 1.022236, + "total_code": "43044", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 148, + "total_functions": 135, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -127653,15 +132528,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", @@ -127761,15 +132627,6 @@ "virtual_address": "5052104" } }, - { - "name": "func_004D1750", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "5808", - "metadata": { - "virtual_address": "5052240" - } - }, { "name": "func_004D1878", "size": "4", @@ -127842,15 +132699,6 @@ "virtual_address": "5057296" } }, - { - "name": "func_004D2CB0", - "size": "152", - "fuzzy_match_percent": 0.0, - "address": "11280", - "metadata": { - "virtual_address": "5057712" - } - }, { "name": "func_004D2D48", "size": "140", @@ -127959,15 +132807,6 @@ "virtual_address": "5062512" } }, - { - "name": "func_004D4058", - "size": "88", - "fuzzy_match_percent": 0.0, - "address": "16312", - "metadata": { - "virtual_address": "5062744" - } - }, { "name": "func_004D4100", "size": "324", @@ -128049,42 +132888,6 @@ "virtual_address": "5064728" } }, - { - "name": "func_004D48B8", - "size": "156", - "fuzzy_match_percent": 0.0, - "address": "18456", - "metadata": { - "virtual_address": "5064888" - } - }, - { - "name": "func_004D4A88", - "size": "240", - "fuzzy_match_percent": 0.0, - "address": "18920", - "metadata": { - "virtual_address": "5065352" - } - }, - { - "name": "func_004D4C10", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "19312", - "metadata": { - "virtual_address": "5065744" - } - }, - { - "name": "func_004D4D38", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "19608", - "metadata": { - "virtual_address": "5066040" - } - }, { "name": "func_004D4E08", "size": "1080", @@ -128148,15 +132951,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 +132996,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", @@ -128346,15 +133131,6 @@ "virtual_address": "5085344" } }, - { - "name": "func_004D9930", - "size": "212", - "fuzzy_match_percent": 0.0, - "address": "39056", - "metadata": { - "virtual_address": "5085488" - } - }, { "name": "func_004D9A90", "size": "4", @@ -128499,15 +133275,6 @@ "virtual_address": "5094064" } }, - { - "name": "func_004DBC50", - "size": "168", - "fuzzy_match_percent": 0.0, - "address": "48048", - "metadata": { - "virtual_address": "5094480" - } - }, { "name": "func_004DBCF8", "size": "172", @@ -128949,15 +133716,6 @@ "virtual_address": "5111384" } }, - { - "name": "func_004DFED8", - "size": "280", - "fuzzy_match_percent": 0.0, - "address": "65080", - "metadata": { - "virtual_address": "5111512" - } - }, { "name": "func_004DFFF0", "size": "4", @@ -128980,11 +133738,11 @@ { "name": "main/.text/004Exxxx", "measures": { - "fuzzy_match_percent": 0.097587, - "total_code": "59436", + "fuzzy_match_percent": 0.099694, + "total_code": "58180", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 145, + "total_functions": 137, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -129326,15 +134084,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 +134183,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", @@ -129623,15 +134363,6 @@ "virtual_address": "5146608" } }, - { - "name": "func_004E87F8", - "size": "164", - "fuzzy_match_percent": 0.0, - "address": "34720", - "metadata": { - "virtual_address": "5146616" - } - }, { "name": "func_004E88A0", "size": "20", @@ -129641,15 +134372,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", @@ -129668,15 +134390,6 @@ "virtual_address": "5147600" } }, - { - "name": "func_004E8BD8", - "size": "224", - "fuzzy_match_percent": 0.0, - "address": "35712", - "metadata": { - "virtual_address": "5147608" - } - }, { "name": "func_004E8CB8", "size": "188", @@ -129866,15 +134579,6 @@ "virtual_address": "5158160" } }, - { - "name": "func_004EB520", - "size": "100", - "fuzzy_match_percent": 0.0, - "address": "46280", - "metadata": { - "virtual_address": "5158176" - } - }, { "name": "func_004EB5F0", "size": "12", @@ -129947,15 +134651,6 @@ "virtual_address": "5159672" } }, - { - "name": "func_004EBDD8", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "48512", - "metadata": { - "virtual_address": "5160408" - } - }, { "name": "func_004EBF08", "size": "764", @@ -130226,15 +134921,6 @@ "virtual_address": "5176000" } }, - { - "name": "func_004EFAD0", - "size": "60", - "fuzzy_match_percent": 0.0, - "address": "64120", - "metadata": { - "virtual_address": "5176016" - } - }, { "name": "func_004EFB10", "size": "12", @@ -130311,11 +134997,11 @@ { "name": "main/.text/004Fxxxx", "measures": { - "fuzzy_match_percent": 0.407384, - "total_code": "54740", + "fuzzy_match_percent": 0.410897, + "total_code": "54272", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 165, + "total_functions": 162, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -130360,15 +135046,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", @@ -130378,15 +135055,6 @@ "virtual_address": "5180016" } }, - { - "name": "func_004F0B38", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "2648", - "metadata": { - "virtual_address": "5180216" - } - }, { "name": "func_004F0BF8", "size": "372", @@ -130459,15 +135127,6 @@ "virtual_address": "5184280" } }, - { - "name": "func_004F1C08", - "size": "68", - "fuzzy_match_percent": 0.0, - "address": "6952", - "metadata": { - "virtual_address": "5184520" - } - }, { "name": "func_004F2078", "size": "488", @@ -131822,11 +136481,11 @@ { "name": "main/.text/0050xxxx", "measures": { - "fuzzy_match_percent": 0.832604, - "total_code": "41916", + "fuzzy_match_percent": 0.299755, + "total_code": "31360", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 183, + "total_functions": 131, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -131997,15 +136656,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", @@ -132051,15 +136701,6 @@ "virtual_address": "5250704" } }, - { - "name": "func_00501F70", - "size": "112", - "fuzzy_match_percent": 97.32, - "address": "7792", - "metadata": { - "virtual_address": "5250928" - } - }, { "name": "func_00502208", "size": "12", @@ -132168,15 +136809,6 @@ "virtual_address": "5254200" } }, - { - "name": "func_00502D28", - "size": "180", - "fuzzy_match_percent": 0.0, - "address": "11304", - "metadata": { - "virtual_address": "5254440" - } - }, { "name": "func_00502E90", "size": "312", @@ -132213,15 +136845,6 @@ "virtual_address": "5256576" } }, - { - "name": "func_005037A8", - "size": "152", - "fuzzy_match_percent": 0.0, - "address": "13992", - "metadata": { - "virtual_address": "5257128" - } - }, { "name": "func_00503840", "size": "12", @@ -132330,15 +136953,6 @@ "virtual_address": "5261752" } }, - { - "name": "func_00504C20", - "size": "164", - "fuzzy_match_percent": 89.02, - "address": "19232", - "metadata": { - "virtual_address": "5262368" - } - }, { "name": "func_00504CC8", "size": "204", @@ -132357,15 +136971,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", @@ -132384,15 +136989,6 @@ "virtual_address": "5263216" } }, - { - "name": "func_00504F78", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "20088", - "metadata": { - "virtual_address": "5263224" - } - }, { "name": "func_00505148", "size": "376", @@ -132402,15 +136998,6 @@ "virtual_address": "5263688" } }, - { - "name": "func_005052D0", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "20944", - "metadata": { - "virtual_address": "5264080" - } - }, { "name": "func_005053C8", "size": "4", @@ -132420,60 +137007,6 @@ "virtual_address": "5264328" } }, - { - "name": "func_005053D0", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "21200", - "metadata": { - "virtual_address": "5264336" - } - }, - { - "name": "func_00505488", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "21384", - "metadata": { - "virtual_address": "5264520" - } - }, - { - "name": "func_00505540", - "size": "168", - "fuzzy_match_percent": 0.0, - "address": "21568", - "metadata": { - "virtual_address": "5264704" - } - }, - { - "name": "func_005055E8", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "21736", - "metadata": { - "virtual_address": "5264872" - } - }, - { - "name": "func_005056E0", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "21984", - "metadata": { - "virtual_address": "5265120" - } - }, - { - "name": "func_005057D8", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "22232", - "metadata": { - "virtual_address": "5265368" - } - }, { "name": "func_005058D0", "size": "4", @@ -132492,15 +137025,6 @@ "virtual_address": "5265736" } }, - { - "name": "func_00505950", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "22608", - "metadata": { - "virtual_address": "5265744" - } - }, { "name": "func_00505A48", "size": "4", @@ -132510,15 +137034,6 @@ "virtual_address": "5265992" } }, - { - "name": "func_00505A50", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "22864", - "metadata": { - "virtual_address": "5266000" - } - }, { "name": "func_00505B38", "size": "4", @@ -132528,15 +137043,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 +137061,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", @@ -132582,15 +137079,6 @@ "virtual_address": "5267192" } }, - { - "name": "func_00505F00", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "24064", - "metadata": { - "virtual_address": "5267200" - } - }, { "name": "func_00505FF8", "size": "4", @@ -132600,24 +137088,6 @@ "virtual_address": "5267448" } }, - { - "name": "func_00506000", - "size": "212", - "fuzzy_match_percent": 0.0, - "address": "24320", - "metadata": { - "virtual_address": "5267456" - } - }, - { - "name": "func_005060D8", - "size": "212", - "fuzzy_match_percent": 0.0, - "address": "24536", - "metadata": { - "virtual_address": "5267672" - } - }, { "name": "func_005061B0", "size": "276", @@ -132636,15 +137106,6 @@ "virtual_address": "5268168" } }, - { - "name": "func_005062D0", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "25040", - "metadata": { - "virtual_address": "5268176" - } - }, { "name": "func_005063B8", "size": "4", @@ -132654,15 +137115,6 @@ "virtual_address": "5268408" } }, - { - "name": "func_005063C0", - "size": "228", - "fuzzy_match_percent": 0.0, - "address": "25280", - "metadata": { - "virtual_address": "5268416" - } - }, { "name": "func_005064A8", "size": "228", @@ -132672,24 +137124,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", - "fuzzy_match_percent": 0.0, - "address": "25976", - "metadata": { - "virtual_address": "5269112" - } - }, { "name": "func_00506760", "size": "276", @@ -132699,15 +137133,6 @@ "virtual_address": "5269344" } }, - { - "name": "func_00506878", - "size": "244", - "fuzzy_match_percent": 0.0, - "address": "26488", - "metadata": { - "virtual_address": "5269624" - } - }, { "name": "func_00506970", "size": "4", @@ -132726,15 +137151,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 +137169,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,42 +137223,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", - "fuzzy_match_percent": 0.0, - "address": "28464", - "metadata": { - "virtual_address": "5271600" - } - }, - { - "name": "func_005070F8", - "size": "188", - "fuzzy_match_percent": 0.0, - "address": "28664", - "metadata": { - "virtual_address": "5271800" - } - }, - { - "name": "func_005071B8", - "size": "184", - "fuzzy_match_percent": 0.0, - "address": "28856", - "metadata": { - "virtual_address": "5271992" - } - }, { "name": "func_00507270", "size": "384", @@ -132861,24 +137232,6 @@ "virtual_address": "5272176" } }, - { - "name": "func_005073F0", - "size": "172", - "fuzzy_match_percent": 0.0, - "address": "29424", - "metadata": { - "virtual_address": "5272560" - } - }, - { - "name": "func_005074A0", - "size": "236", - "fuzzy_match_percent": 0.0, - "address": "29600", - "metadata": { - "virtual_address": "5272736" - } - }, { "name": "func_00507590", "size": "12", @@ -132888,15 +137241,6 @@ "virtual_address": "5272976" } }, - { - "name": "func_005075A0", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "29856", - "metadata": { - "virtual_address": "5272992" - } - }, { "name": "func_00507668", "size": "4", @@ -132906,24 +137250,6 @@ "virtual_address": "5273192" } }, - { - "name": "func_00507690", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "30096", - "metadata": { - "virtual_address": "5273232" - } - }, - { - "name": "func_00507758", - "size": "200", - "fuzzy_match_percent": 0.0, - "address": "30296", - "metadata": { - "virtual_address": "5273432" - } - }, { "name": "func_00507820", "size": "4", @@ -132933,15 +137259,6 @@ "virtual_address": "5273632" } }, - { - "name": "func_00507828", - "size": "208", - "fuzzy_match_percent": 0.0, - "address": "30504", - "metadata": { - "virtual_address": "5273640" - } - }, { "name": "func_005079C8", "size": "324", @@ -132951,15 +137268,6 @@ "virtual_address": "5274056" } }, - { - "name": "func_00507C40", - "size": "144", - "fuzzy_match_percent": 0.0, - "address": "31552", - "metadata": { - "virtual_address": "5274688" - } - }, { "name": "func_00507CD0", "size": "3344", @@ -132996,33 +137304,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", @@ -133041,24 +137322,6 @@ "virtual_address": "5283520" } }, - { - "name": "func_0050A060", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "40800", - "metadata": { - "virtual_address": "5283936" - } - }, - { - "name": "func_0050A1D8", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "41176", - "metadata": { - "virtual_address": "5284312" - } - }, { "name": "func_0050A2C0", "size": "192", @@ -133068,24 +137331,6 @@ "virtual_address": "5284544" } }, - { - "name": "func_0050A3D0", - "size": "216", - "fuzzy_match_percent": 0.0, - "address": "41680", - "metadata": { - "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 +137367,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", @@ -133149,33 +137385,6 @@ "virtual_address": "5292624" } }, - { - "name": "func_0050C758", - "size": "232", - "fuzzy_match_percent": 0.0, - "address": "50776", - "metadata": { - "virtual_address": "5293912" - } - }, - { - "name": "func_0050C980", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "51328", - "metadata": { - "virtual_address": "5294464" - } - }, - { - "name": "func_0050CAE8", - "size": "192", - "fuzzy_match_percent": 0.0, - "address": "51688", - "metadata": { - "virtual_address": "5294824" - } - }, { "name": "func_0050CE98", "size": "140", @@ -133383,15 +137592,6 @@ "virtual_address": "5303160" } }, - { - "name": "func_0050EC18", - "size": "252", - "fuzzy_match_percent": 0.0, - "address": "60184", - "metadata": { - "virtual_address": "5303320" - } - }, { "name": "func_0050EEC8", "size": "4", @@ -133472,15 +137672,6 @@ "metadata": { "virtual_address": "5307288" } - }, - { - "name": "func_0050FD80", - "size": "156", - "fuzzy_match_percent": 0.0, - "address": "64640", - "metadata": { - "virtual_address": "5307776" - } } ], "metadata": { @@ -133496,10 +137687,10 @@ "name": "main/.text/0051xxxx", "measures": { "fuzzy_match_percent": 0.0, - "total_code": "62524", + "total_code": "62012", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 126, + "total_functions": 123, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -133562,15 +137753,6 @@ "virtual_address": "5310064" } }, - { - "name": "func_00511530", - "size": "208", - "fuzzy_match_percent": 0.0, - "address": "5344", - "metadata": { - "virtual_address": "5313840" - } - }, { "name": "func_00511648", "size": "44", @@ -133625,15 +137807,6 @@ "virtual_address": "5315392" } }, - { - "name": "func_00511BA0", - "size": "104", - "fuzzy_match_percent": 0.0, - "address": "6992", - "metadata": { - "virtual_address": "5315488" - } - }, { "name": "func_00511C68", "size": "36", @@ -133823,15 +137996,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 +138819,11 @@ { "name": "main/.text/0052xxxx", "measures": { - "fuzzy_match_percent": 0.171566, - "total_code": "64700", + "fuzzy_match_percent": 0.172408, + "total_code": "64384", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 91, + "total_functions": 89, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -134965,15 +139129,6 @@ "virtual_address": "5390984" } }, - { - "name": "func_00524408", - "size": "172", - "fuzzy_match_percent": 0.0, - "address": "17048", - "metadata": { - "virtual_address": "5391368" - } - }, { "name": "func_005244B8", "size": "1212", @@ -135172,15 +139327,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 +139647,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 +139812,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 +139924,11 @@ { "name": "main/.text/0054xxxx", "measures": { - "fuzzy_match_percent": 0.375615, - "total_code": "53780", + "fuzzy_match_percent": 0.383838, + "total_code": "52628", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 131, + "total_functions": 124, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -135971,15 +140108,6 @@ "virtual_address": "5510920" } }, - { - "name": "func_00541A50", - "size": "176", - "fuzzy_match_percent": 0.0, - "address": "5816", - "metadata": { - "virtual_address": "5511760" - } - }, { "name": "func_00541C58", "size": "188", @@ -136538,15 +140666,6 @@ "virtual_address": "5549480" } }, - { - "name": "func_0054AFA0", - "size": "176", - "fuzzy_match_percent": 0.0, - "address": "44040", - "metadata": { - "virtual_address": "5549984" - } - }, { "name": "func_0054B098", "size": "4", @@ -136628,15 +140747,6 @@ "virtual_address": "5551656" } }, - { - "name": "func_0054B6F8", - "size": "204", - "fuzzy_match_percent": 0.0, - "address": "45920", - "metadata": { - "virtual_address": "5551864" - } - }, { "name": "func_0054B7C8", "size": "4", @@ -136664,15 +140774,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", @@ -136754,15 +140855,6 @@ "virtual_address": "5554768" } }, - { - "name": "func_0054C330", - "size": "208", - "fuzzy_match_percent": 0.0, - "address": "49048", - "metadata": { - "virtual_address": "5554992" - } - }, { "name": "func_0054C400", "size": "4", @@ -136916,15 +141008,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", @@ -136934,15 +141017,6 @@ "virtual_address": "5562824" } }, - { - "name": "func_0054E3E8", - "size": "104", - "fuzzy_match_percent": 0.0, - "address": "57424", - "metadata": { - "virtual_address": "5563368" - } - }, { "name": "func_0054E450", "size": "1016", @@ -136992,11 +141066,11 @@ { "name": "main/core.text/0011xxxx", "measures": { - "fuzzy_match_percent": 0.897872, - "total_code": "12028", + "fuzzy_match_percent": 0.90814, + "total_code": "11892", "matched_code": "0", "matched_code_percent": 0.0, - "total_functions": 33, + "total_functions": 31, "matched_functions": 0, "matched_functions_percent": 0.0, "complete_code": "0", @@ -137167,15 +141241,6 @@ "virtual_address": "1164648" } }, - { - "name": "func_0011C750", - "size": "68", - "fuzzy_match_percent": 0.0, - "address": "9616", - "metadata": { - "virtual_address": "1165136" - } - }, { "name": "func_0011C798", "size": "168", @@ -137194,15 +141259,6 @@ "virtual_address": "1165680" } }, - { - "name": "func_0011C978", - "size": "68", - "fuzzy_match_percent": 0.0, - "address": "10168", - "metadata": { - "virtual_address": "1165688" - } - }, { "name": "func_0011D020", "size": "964", @@ -163026,13 +167082,13 @@ { "name": "Shared level code", "measures": { - "fuzzy_match_percent": 6.893741, + "fuzzy_match_percent": 6.977384, "total_code": "2008520", - "matched_code": "125324", - "matched_code_percent": 6.239619, + "matched_code": "127004", + "matched_code_percent": 6.323263, "total_functions": 5088, - "matched_functions": 1627, - "matched_functions_percent": 31.977201, + "matched_functions": 1642, + "matched_functions_percent": 32.272013, "complete_code": "0", "complete_code_percent": 0.0, "total_units": 1, @@ -202075,7 +206131,7 @@ { "name": "func_L00_006A3670", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3007248", "metadata": { "virtual_address": "6960752" @@ -202084,7 +206140,7 @@ { "name": "func_L00_006A36E0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3007360", "metadata": { "virtual_address": "6960864" @@ -202102,7 +206158,7 @@ { "name": "func_L00_006A37D0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3007600", "metadata": { "virtual_address": "6961104" @@ -202120,7 +206176,7 @@ { "name": "func_L00_006A38C0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3007840", "metadata": { "virtual_address": "6961344" @@ -202129,7 +206185,7 @@ { "name": "func_L00_006A3930", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3007952", "metadata": { "virtual_address": "6961456" @@ -202138,7 +206194,7 @@ { "name": "func_L00_006A39A0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008064", "metadata": { "virtual_address": "6961568" @@ -202147,7 +206203,7 @@ { "name": "func_L00_006A3A10", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008176", "metadata": { "virtual_address": "6961680" @@ -202165,7 +206221,7 @@ { "name": "func_L00_006A3A80", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008288", "metadata": { "virtual_address": "6961792" @@ -202174,7 +206230,7 @@ { "name": "func_L00_006A3AF0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008400", "metadata": { "virtual_address": "6961904" @@ -202183,7 +206239,7 @@ { "name": "func_L00_006A3B60", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008512", "metadata": { "virtual_address": "6962016" @@ -202192,7 +206248,7 @@ { "name": "func_L00_006A3BD0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008624", "metadata": { "virtual_address": "6962128" @@ -202210,7 +206266,7 @@ { "name": "func_L00_006A3CC0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008864", "metadata": { "virtual_address": "6962368" @@ -202219,7 +206275,7 @@ { "name": "func_L00_006A3D30", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3008976", "metadata": { "virtual_address": "6962480" @@ -202228,7 +206284,7 @@ { "name": "func_L00_006A3DA0", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3009088", "metadata": { "virtual_address": "6962592" @@ -202237,7 +206293,7 @@ { "name": "func_L00_006A3E10", "size": "112", - "fuzzy_match_percent": 0.0, + "fuzzy_match_percent": 100.0, "address": "3009200", "metadata": { "virtual_address": "6962704" diff --git a/src/pal/core/0011C750.c b/src/pal/core/0011C750.c new file mode 100644 index 000000000..610213a00 --- /dev/null +++ b/src/pal/core/0011C750.c @@ -0,0 +1,12 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_L08_0033CD18 (src/levels/shared/L08_002F2D10.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern s32 func_00123DF8(void *stream, const char *format, void *arguments); + +/* The compiler supplies the R5900 variadic save area. The worker consumes its + * integer-register slots; the ABI places these 0x30 below next_arg here. */ +s32 func_0011C750(void *stream, const char *format, ...) +{ + return func_00123DF8(stream, format, (char *)__builtin_next_arg(format) - 0x30); +} diff --git a/src/pal/core/0011C978.c b/src/pal/core/0011C978.c new file mode 100644 index 000000000..8068770a5 --- /dev/null +++ b/src/pal/core/0011C978.c @@ -0,0 +1,12 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_L08_0033CD18 (src/levels/shared/L08_002F2D10.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern s32 func_00122A28(void *stream, const char *format, void *arguments); + +/* The compiler supplies the R5900 variadic save area. The worker consumes its + * integer-register slots; the ABI places these 0x30 below next_arg here. */ +s32 func_0011C978(void *stream, const char *format, ...) +{ + return func_00122A28(stream, format, (char *)__builtin_next_arg(format) - 0x30); +} 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/00447A00.c b/src/pal/game/00447A00.c new file mode 100644 index 000000000..98971557a --- /dev/null +++ b/src/pal/game/00447A00.c @@ -0,0 +1,46 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_0027A0F8 (src/game/0027A0F8.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern u8 *D_0022141C; + +u8 *func_00447A00(s32 x, s32 y, s32 z) +{ + u8 *base = D_0022141C; + u8 *data = base + *(s32 *)base; + u16 *node = (u16 *)(base + 4); + s32 iz; + s32 iy; + s32 ix; + + iz = z - node[0]; + if (iz < 0) { + return 0; + } + if (!(iz < node[1])) { + return 0; + } + if (!node[iz + 2]) { + return 0; + } + node = (u16 *)(base + node[iz + 2] * 4); + iy = y - node[0]; + if (iy < 0) { + return 0; + } + if (!(iy < node[1])) { + return 0; + } + if (!node[iy + 2]) { + return 0; + } + node = (u16 *)(base + node[iy + 2] * 4); + ix = x - node[0]; + if (ix < 0 || !(ix < node[1])) { + return 0; + } + if (node[ix + 2] == 0xFFFF) { + return 0; + } + return data + node[ix + 2] * 128; +} diff --git a/src/pal/game/00447AD8.c b/src/pal/game/00447AD8.c new file mode 100644 index 000000000..5db699645 --- /dev/null +++ b/src/pal/game/00447AD8.c @@ -0,0 +1,26 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/382380.c func_00386678. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +extern u8 *func_00447A00(s32, s32, s32); +u8 *func_00447AD8(s32 x0, s32 y0, s32 z0, s32 x1, s32 y1, s32 z1, f32 factor) +{ + s32 x, y, z; + u8 *result; + if (factor < 0.5f) { + if ((result = func_00447A00(x0, y0, z0)) == 0) { + x = x1; + y = y1; + z = z1; + goto fallback; + } + } else if ((result = func_00447A00(x1, y1, z1)) == 0) { + x = x0; + y = y0; + z = z0; + fallback: + return func_00447A00(x, y, z); + } + return result; +} diff --git a/src/pal/game/004493D8.c b/src/pal/game/004493D8.c new file mode 100644 index 000000000..a9fcbb8f6 --- /dev/null +++ b/src/pal/game/004493D8.c @@ -0,0 +1,37 @@ +/* cflags: -fno-schedule-insns */ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_0027C660 (src/game/0027C660-rc2.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern u8 *D_00221F20; +extern u8 *D_00221300; +extern u8 *D_002212FC; +extern void func_0046A228(void); +extern u8 *func_004E8AB0(void); + +/* Completes a command-chain block and links the next buffer position. */ +void func_004493D8(void) +{ + s32 tag; + u8 *packet; + + D_00221300 = D_00221F20; + tag = 0x20000000; + D_00221F20 += 16; + *(s32 *)D_002212FC = tag; + packet = D_002212FC; + *(u8 **)(packet + 4) = D_00221F20; + *(s32 *)(D_002212FC + 8) = 0; + *(s32 *)(D_002212FC + 12) = 0; + func_0046A228(); + func_004E8AB0(); + *(s32 *)D_00221F20 = tag; + *(u8 **)(D_00221F20 + 4) = D_002212FC + 16; + *(s32 *)(D_00221F20 + 8) = 0; + *(s32 *)(D_00221F20 + 12) = 0; + D_00221F20 += 16; + *(s32 *)D_00221300 = tag; + *(u8 **)(D_00221300 + 4) = D_00221F20; + *(s32 *)(D_00221300 + 8) = 0; + *(s32 *)(D_00221300 + 12) = 0; +} diff --git a/src/pal/game/0044B268.c b/src/pal/game/0044B268.c new file mode 100644 index 000000000..6449bb152 --- /dev/null +++ b/src/pal/game/0044B268.c @@ -0,0 +1,17 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/382380.c func_0038C3B0. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +extern void func_0044A540(s32, s32, s32, s32, u64); +void func_0044B268(s32 x, s32 y, s32 width, s32 extent, s32 alpha, s32 rgb) +{ + s32 color = (s32)(((u32)alpha << 24) | (u32)rgb); + func_0044A540(x, y, width, extent, color); + func_0044A540(x + 1, y - 1, width - 2, width, color); + func_0044A540(x + 2, y - 2, width - 3, width - 2, color); + func_0044A540(x + 4, y - 4, width - 4, width - 3, color); + func_0044A540(x + 1, y - 1, extent, extent + 2, color); + func_0044A540(x + 2, y - 2, extent + 2, extent + 3, color); + func_0044A540(x + 4, y - 4, extent + 3, extent + 4, color); +} 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..095ce508d --- /dev/null +++ b/src/pal/game/0044DFE0.c @@ -0,0 +1,19 @@ +#include "common.h" +typedef struct { + 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, const void *, const void *, const void *, 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/0044E090.c b/src/pal/game/0044E090.c new file mode 100644 index 000000000..ce94c5921 --- /dev/null +++ b/src/pal/game/0044E090.c @@ -0,0 +1,15 @@ +#include "common.h" + +extern u8 D_00239640[]; +extern s32 D_002213F8; +extern void func_0044B3D0(void), func_0044D860(void *), func_0044D4B0(s32, const void *, const void *, const void *, s32, s32); +void func_0044E090(void *unused, s32 command, const void *a, const void *b, const void *c, s32 flags, s32 mode) +{ + if (!D_00239640[0]) + func_0044B3D0(); + else if (D_002213F8 != 8) { + func_0044B3D0(); + func_0044D860(D_00239640); + } + func_0044D4B0(command, a, b, c, flags, mode); +} diff --git a/src/pal/game/0044E158.c b/src/pal/game/0044E158.c new file mode 100644 index 000000000..ece70785f --- /dev/null +++ b/src/pal/game/0044E158.c @@ -0,0 +1,17 @@ +#include "common.h" +typedef struct { + 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, const void *, const void *, const void *, 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/00454E18.c b/src/pal/game/00454E18.c new file mode 100644 index 000000000..3c7598f7c --- /dev/null +++ b/src/pal/game/00454E18.c @@ -0,0 +1,33 @@ +/* cflags: -mno-split-addresses */ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/38DED0.c func_0038E3C8. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u32 first; + u32 metrics; +} Glyph; +extern Glyph *D_0021DF14[]; +extern s32 func_00454A70(const u8 *, s32, s32 *); +s32 func_00454E18(const u8 *text, s32 length, f32 scale) +{ + s32 offset = 0; + s32 running = 1; + f32 maximum = 0.0f; + s32 glyph = 0; + for (; running && offset != length; offset++) { + if (text[offset] == 0) { + running = 0; + } else { + f32 width, height, value; + offset += func_00454A70(text, offset, &glyph); + width = (f32)((D_0021DF14[0][glyph].metrics >> 17) & 0x3F) * scale; + height = (f32)((D_0021DF14[0][glyph].metrics >> 9) & 0xFF) * scale; + value = width + height * 0.25f; + if (maximum < value) + maximum = value; + } + } + return (s32)maximum; +} diff --git a/src/pal/game/00457AF8.c b/src/pal/game/00457AF8.c new file mode 100644 index 000000000..566125397 --- /dev/null +++ b/src/pal/game/00457AF8.c @@ -0,0 +1,8 @@ +#include "common.h" +extern void func_00455288(f32, f32, f32, f32, s32, const void *, s32, s32, s32, u64, f32, f32); +extern s32 func_00454F98(const char *, s32, f32); +s32 func_00457AF8(s32 x, s32 y, s32 a, const char *b, s32 c) +{ + func_00455288(x, y, 1.0f, 1.0f, a, b, c, 1, 0, 0x80000000UL, 0.0f, 0.0f); + return (s32)((u32)x - (u32)(func_00454F98(b, c, 1.0f) >> 1)); +} diff --git a/src/pal/game/00457BA0.c b/src/pal/game/00457BA0.c new file mode 100644 index 000000000..31d458097 --- /dev/null +++ b/src/pal/game/00457BA0.c @@ -0,0 +1,15 @@ +#include "common.h" +extern void func_00455288(f32, f32, f32, f32, u64, const char *, s32, s32, s32, u64, f32, f32); +extern s32 func_00454F98(const char *, s32, f32); +extern s32 D_0021DF4C; +extern void func_00454B68(s32); +s32 func_00457BA0(s32 x, s32 y, u64 a, const char *b, s32 c) +{ + s32 old = D_0021DF4C; + s32 result; + func_00454B68(0); + func_00455288(x, y, 1.0f, 1.0f, a, b, c, 1, 0, 0x80000000UL, 0.0f, 0.0f); + result = (s32)((u32)x - (u32)(func_00454F98(b, c, 1.0f) >> 1)); + func_00454B68(old); + return result; +} diff --git a/src/pal/game/00457CF0.c b/src/pal/game/00457CF0.c new file mode 100644 index 000000000..4ac0176a3 --- /dev/null +++ b/src/pal/game/00457CF0.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_00457CF0(s32 x, s32 y, s32 a, void *b, s32 c) +{ + s32 old = D_0021DF4C; + func_00454B68(0); + func_00455288(x, y, 1.0f, 1.0f, a, b, c, 2, 0, 0x80000000UL, 0.0f, 0.0f); + func_00454B68(old); +} 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/00457E60.c b/src/pal/game/00457E60.c new file mode 100644 index 000000000..a291b8da2 --- /dev/null +++ b/src/pal/game/00457E60.c @@ -0,0 +1,10 @@ +#include "common.h" + +/* Control-flow reference: OpenRAC/OpenRAC 73f725bf54bb1bf6d8b9bb5b1511ed00d551fbde, + * games/rac3/ntsc/src/frontbin/3896E8.c:func_0038C840. + * Reconstructed against RAC4 PAL retail. */ +extern void func_00455288(f32, f32, f32, f32, u64, const char *, s32, s32, s32, u64, f32, f32); +void func_00457E60(u64 color, const char *first, s32 second, f32 x, f32 y, f32 depth) +{ + func_00455288(x, y, depth, depth, color, first, second, 0, 0, 0x80000000ULL, 0.0f, 0.0f); +} diff --git a/src/pal/game/00458E88.c b/src/pal/game/00458E88.c new file mode 100644 index 000000000..fda02fb12 --- /dev/null +++ b/src/pal/game/00458E88.c @@ -0,0 +1,16 @@ +#include "common.h" +extern void func_00131968(void), func_00138350(s32, s32, s32, s32); +extern s32 D_00171DB8[]; +extern s32 D_0021DEF4; +void func_00458E88(void) +{ + s32 mode; + func_00131968(); + mode = D_00171DB8[0]; + if (mode) + D_0021DEF4 = 0; + if (D_0021DEF4) + func_00138350(0, 0, 80, 1); + else + func_00138350(0, 1, mode == 1 ? 3 : 2, 0); +} 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/0045D6C0.c b/src/pal/game/0045D6C0.c new file mode 100644 index 000000000..1d820a6ae --- /dev/null +++ b/src/pal/game/0045D6C0.c @@ -0,0 +1,25 @@ +#include "common.h" +extern s32 D_0021DE98; +typedef struct { + s32 result, key; +} Pair; +extern Pair D_003DB188[]; +s32 func_0045D6C0(s32 key) +{ + s32 i = 0; + Pair *p; + if (key == 0x2726) { + if (D_0021DE98 == 14 || D_0021DE98 == 34) + return 0x246A; + return 0x2133; + } + if (key == 0x2727) { + if (D_0021DE98 == 14 || D_0021DE98 == 34) + return 0x246D; + return 0x2130; + } + for (; D_003DB188[i].result != -1; i++) + if (key == D_003DB188[i].key) + return D_003DB188[i].result; + return key; +} 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/0045F078.c b/src/pal/game/0045F078.c new file mode 100644 index 000000000..02dc43e9f --- /dev/null +++ b/src/pal/game/0045F078.c @@ -0,0 +1,67 @@ +/* Reference: OpenRAC/rac1-decomp @ 1d8228cc0c81da7bc2bdc3e77479ee050e0ef434; LinkHudBank / func_001FF7F0 (src/game/ui/hud.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u32 address; + u32 unknown4; +} HudEntry; + +typedef struct { + u8 unknown0[12]; + u8 *header; + u8 unknown10[8]; + HudEntry *table2; + HudEntry *table1; +} HudState; + +typedef struct { + u8 unknown0[0x14]; + s32 limits[0]; +} HudLimits1; + +typedef struct { + u8 unknown0[0x34]; + s32 limits[0]; +} HudLimits2; + +extern HudState D_0023F530; + +/* The cross-game reference is RAC1 LinkHudBank, src/game/ui/hud.c. + * All offsets and both relocation passes are reconstructed from PAL retail. */ +void func_0045F078(s32 bank, u32 address) +{ + u32 *banks; + u32 *slot; + s32 first; + s32 limit; + s32 i; + + banks = (u32 *)(D_0023F530.header + 0x74); + slot = &banks[bank]; + if (*slot != 0) { + return; + } + address = (address + 15) & 0xFFFFFFF0; + *slot = address; + if (bank != 0) { + first = ((HudLimits1 *)D_0023F530.header)->limits[bank - 1]; + } else { + first = 0; + } + limit = ((HudLimits1 *)D_0023F530.header)->limits[bank]; + for (i = first; i < limit; i++) { + D_0023F530.table1[i].address &= 0x7FFFFFFF; + D_0023F530.table1[i].address += address; + } + if (bank != 0) { + first = ((HudLimits2 *)D_0023F530.header)->limits[bank - 1]; + } else { + first = 0; + } + limit = ((HudLimits2 *)D_0023F530.header)->limits[bank]; + for (i = first; i < limit; i++) { + D_0023F530.table2[i].address &= 0x7FFFFFFF; + D_0023F530.table2[i].address += address; + } +} diff --git a/src/pal/game/004635A8.c b/src/pal/game/004635A8.c new file mode 100644 index 000000000..5bbad1a09 --- /dev/null +++ b/src/pal/game/004635A8.c @@ -0,0 +1,39 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/397D48.c func_00399810. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + s32 *data; + s32 packed_count; + s32 reserved[2]; +} Group; +extern void func_00462E48(void *, const void *, s32, s32, s32, s32, s32); +extern void func_00463150(void *, s32, s32, s32, s32, s32); +void func_004635A8(Group *groups, const u8 *palette, const u8 *mapping, s32 count) +{ + s32 i, j, group_count, offset, index; + s32 *entry; + Group *group = groups; + Group *next; + for (i = 0; i < count; i++) { + next = group + 1; + group_count = group->packed_count >> 16; + offset = group->packed_count & 0xFFFF; + group->packed_count = offset; + entry = (s32 *)((u32)group->data + (u32)((offset - group_count) * 16)); + for (j = 0; j < group_count; j += 4) { + index = entry[8]; + if (index >= 0) + index = mapping[index]; + if (palette) { + func_00462E48(entry, (const void *)((u32)palette + (u32)(index * 16)), + entry[0], entry[1], entry[4], entry[5], index); + } else { + func_00463150(entry, entry[0], entry[1], entry[4], entry[5], index); + } + entry += 16; + } + group = next; + } +} 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/00466128.c b/src/pal/game/00466128.c new file mode 100644 index 000000000..a0f467568 --- /dev/null +++ b/src/pal/game/00466128.c @@ -0,0 +1,22 @@ +#include "common.h" +extern s32 D_0021DB64, D_0021EE54; +typedef struct { + s32 f0, f4, mode, fC, flags; + char pad[0x1B0]; + s32 f1C4, f1C8, f1CC, f1D0, f1D4, f1D8, f1DC, f1E0, f1E4; +} State; +extern State D_001719C8; +extern void func_00465338(s32); +void func_00466128(void) +{ + D_0021DB64 &= ~0x200; + if (!D_0021EE54 && D_001719C8.f1C4 == 2 && D_001719C8.f1CC < 0) { + if (D_001719C8.f1D4 || (D_001719C8.mode == 2 && D_001719C8.flags)) { + D_001719C8.f1E4 = 0; + func_00465338(3); + } else { + D_001719C8.f1E4 = 1; + func_00465338(1); + } + } +} diff --git a/src/pal/game/004694C8.c b/src/pal/game/004694C8.c new file mode 100644 index 000000000..28253320d --- /dev/null +++ b/src/pal/game/004694C8.c @@ -0,0 +1,15 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/39A6E0.c func_0039E788. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +extern u16 func_00469470(const void *, s32); +s32 func_004694C8(const s32 *packet) +{ + s32 result = 0; + s32 checksum = packet[1]; + s32 size = packet[0]; + if (checksum != 0) + result = func_00469470(packet + 2, size) == checksum; + return result; +} diff --git a/src/pal/game/00469508.c b/src/pal/game/00469508.c new file mode 100644 index 000000000..f5897a310 --- /dev/null +++ b/src/pal/game/00469508.c @@ -0,0 +1,49 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/39A6E0.c func_0039E7C8. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u8 *data; + s32 size; + s32 type; + s32 reserved; +} Block; +extern void func_00453E20(void *, s32, s32); +extern void func_00453F30(void *, const void *, s32); +extern u16 func_00469470(const void *, s32); +s32 func_00469508(u8 *destination, s32 index, const Block *blocks) +{ + s32 size = 0; + u8 *out = destination + 8; + const Block *block; + s32 offset; + const u8 *data; + if (blocks->data != 0) { + block = blocks; + do { + size += 8; + offset = index * block->size; + data = block->data + offset; + *(s32 *)out = block->type; + *(s32 *)(out + 4) = block->size; + out += 8; + if (block->type == 0x1770) { + func_00453E20(out, 0, block->size); + } else { + func_00453F30(out, data, block->size); + } + out += block->size; + size += block->size; + block++; + out = (u8 *)(((s32)out + 3) & ~3); + size = (size + 3) & ~3; + } while (block->data != 0); + } + size += 8; + *(s32 *)(out + 4) = 0; + *(s32 *)out = -1; + *(u32 *)(destination + 4) = func_00469470(destination + 8, size); + *(s32 *)destination = size; + return size + 8; +} diff --git a/src/pal/game/0046D780.c b/src/pal/game/0046D780.c new file mode 100644 index 000000000..8b420ae59 --- /dev/null +++ b/src/pal/game/0046D780.c @@ -0,0 +1,72 @@ +#include "common.h" + +/* Control-flow reference: OpenRAC/OpenRAC 73f725bf54bb1bf6d8b9bb5b1511ed00d551fbde, + * games/rac3/ntsc/src/frontbin/3BDAC0.c:func_003BDEA8. + * Reconstructed against RAC4 PAL retail; all address targets audited. */ +typedef struct { + u8 pad[0xB]; + u8 dimensions; + u8 padC[0x14]; + u8 *data; +} Data; +typedef struct { + u8 pad[0x24]; + Data *data; +} Object; +typedef struct { + u32 *packet; + u32 taggedObject; +} Entry; +extern Entry *D_0022154C; +extern Entry D_00265E60[]; +extern u8 *D_00221F20; +extern u8 D_003D8350[], D_003DA6F0[]; +extern void func_00453FE8(void *, const void *, s32); +void func_0046D780(void) +{ + u32 *header; + Entry *entry; + if (D_0022154C == D_00265E60) + return; + header = (u32 *)D_00221F20; + D_00221F20 = (u8 *)(header + 4); + for (entry = D_00265E60; entry < D_0022154C; entry++) { + u32 *packet = entry->packet; + u32 value = entry->taggedObject; + Object *object; + Data *data; + s32 width, height, index; + u8 *base; + s32 i; + packet[0] = 0x20000000; + index = value & 15; + object = (Object *)(value & ~15); + packet[1] = (u32)D_00221F20; + packet[3] = 0x11000000; + data = object->data; + height = data->dimensions >> 4; + width = data->dimensions & 15; + base = data->data - ((width * height) << 10) - 16; + for (i = 0; i < height; i++) { + s16 value = ((s16 *)base)[i]; + func_00453FE8(D_00221F20, D_003D8350, 0x70); + *(s16 *)(D_00221F20 + 0x24) = value; + *(u8 **)(D_00221F20 + 0x64) = base + (index << 10) + 16 + ((i * width) << 10); + D_00221F20 = D_00221F20 + 0x70; + } + ((u32 *)D_00221F20)[0] = 0x30000003; + ((u32 *)D_00221F20)[1] = (u32)D_003DA6F0; + ((u32 *)D_00221F20)[2] = 0; + ((u32 *)D_00221F20)[3] = 0x50000003; + D_00221F20 += 0x10; + ((u32 *)D_00221F20)[0] = 0x20000000; + ((u32 *)D_00221F20)[1] = (u32)(packet + 4); + ((u32 *)D_00221F20)[2] = 0; + ((u32 *)D_00221F20)[3] = 0; + D_00221F20 = D_00221F20 + 0x10; + } + header[0] = 0x20000000; + header[1] = (u32)D_00221F20; + header[2] = 0; + header[3] = 0; +} diff --git a/src/pal/game/004730F8.c b/src/pal/game/004730F8.c new file mode 100644 index 000000000..13f05f977 --- /dev/null +++ b/src/pal/game/004730F8.c @@ -0,0 +1,32 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + s32 f0; + s32 (*f4)(Object *); +} Entry; +struct Object { + char pad[0x20]; + u8 type; + char pad21[0x9B]; + s16 index; +}; +typedef struct { + s32 f0; + u32 flags; +} Flags; +extern Entry *func_0046DD08(s32, s32, s32); +extern Flags *func_00476ED0(Object *); +s32 func_004730F8(Object *p) +{ + Entry *e; + Flags *f; + if (!p || p->type == 254 || p->type == 253) + return 1; + e = func_0046DD08(p->index, 14, 28); + if (e && e->f4 && e->f4(p)) + return 1; + f = func_00476ED0(p); + if (f && (f->flags & 0x100)) + return 1; + return 0; +} diff --git a/src/pal/game/004749A0.c b/src/pal/game/004749A0.c new file mode 100644 index 000000000..497c605a8 --- /dev/null +++ b/src/pal/game/004749A0.c @@ -0,0 +1,29 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L01_004463D0.c func_L01_004463F8. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + f32 x, y, z, w; +} Vector; +s32 func_004749A0(const Vector *point, const Vector *vertices, s32 count) +{ + s32 i; + s32 next = 0; + s32 inside = 0; + for (i = 0; i < count; i++) { + next++; + if (next == count) + next = 0; + if ((vertices[i].y < point->y && point->y <= vertices[next].y) || + (vertices[next].y < point->y && point->y <= vertices[i].y)) { + if (vertices[i].x + (point->y - vertices[i].y) / + (vertices[next].y - vertices[i].y) * + (vertices[next].x - vertices[i].x) < + point->x) { + inside = !inside; + } + } + } + return inside; +} diff --git a/src/pal/game/00476678.c b/src/pal/game/00476678.c new file mode 100644 index 000000000..d227fe410 --- /dev/null +++ b/src/pal/game/00476678.c @@ -0,0 +1,32 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L01_004485E0.c func_L01_00448728. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +extern f32 func_00476548(f32, f32, s32); +extern void func_00476020(f32 *, f32, f32, f32, f32); +extern f32 func_00454328(f32, f32); +f32 func_00476678(f32 *position, f32 *velocity, s32 mode, f32 target, f32 acceleration, f32 damping, f32 limit) +{ + f32 difference; + if (mode == 2) { + if ((target > 0.0f && *position < 0.0f) || + (target < 0.0f && *position > 0.0f)) { + if (target < 0.0f) + mode = -1; + else + mode = 1; + } else + mode = 0; + } + func_00476020(velocity, func_00476548(target, *position, mode), + acceleration, damping, limit); + *position = func_00454328(*position, *velocity); + difference = func_00476548(target, *position, mode); + if (__builtin_fabsf(difference) < limit * 0.01f) { + *position = target; + *velocity = 0.0f; + return *velocity; + } + return difference; +} diff --git a/src/pal/game/00476D30.c b/src/pal/game/00476D30.c new file mode 100644 index 000000000..8bc529e1f --- /dev/null +++ b/src/pal/game/00476D30.c @@ -0,0 +1,12 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L01_00448CC0.c func_L01_00448CC0. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +u32 func_00476D30(f32 red, f32 green, f32 blue, f32 alpha) +{ + u32 g = ((s32)(green * 255.0f) & 0xFF) << 8; + return ((s32)(red * 255.0f) & 0xFF) | g | + (((s32)(blue * 255.0f) & 0xFF) << 16) | + ((u32)(s32)(alpha * 255.0f) << 24); +} diff --git a/src/pal/game/00476DF8.c b/src/pal/game/00476DF8.c new file mode 100644 index 000000000..e6374a2cd --- /dev/null +++ b/src/pal/game/00476DF8.c @@ -0,0 +1,19 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L01_00448CC0.c func_L01_00448D88. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +extern void func_00476D98(s32 *, s32 *, s32 *, s32); +u32 func_00476DF8(u32 color, s32 permutation) +{ + s32 red, green, blue; + u32 alpha; + if (permutation == 0) + return color; + red = color & 0xFF; + green = (s32)(color & 0xFF00) >> 8; + blue = (color >> 16) & 0xFF; + alpha = color >> 24; + func_00476D98(&red, &green, &blue, permutation); + return (alpha << 24) | ((u32)blue << 16) | ((u32)green << 8) | red; +} diff --git a/src/pal/game/00479E28.c b/src/pal/game/00479E28.c new file mode 100644 index 000000000..83edb8265 --- /dev/null +++ b/src/pal/game/00479E28.c @@ -0,0 +1,31 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_L00_00322EC8 (src/levels/shared/L00_00316F60.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u8 unknown0[0x148]; + s32 count; + s32 active; +} Owner; + +typedef struct { + u8 unknown0[0x120]; + void *slots[0]; +} SlotOwner; + +extern void func_0046C6B0(void *); + +void func_00479E28(Owner *owner) +{ + s32 index; + + if (owner->active != 0) { + for (index = 0; index < owner->count; index++) { + if (((SlotOwner *)owner)->slots[index] != 0) { + func_0046C6B0(((SlotOwner *)owner)->slots[index]); + ((SlotOwner *)owner)->slots[index] = 0; + } + } + owner->active = 0; + } +} diff --git a/src/pal/game/00484EB0.c b/src/pal/game/00484EB0.c new file mode 100644 index 000000000..d14c892aa --- /dev/null +++ b/src/pal/game/00484EB0.c @@ -0,0 +1,27 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x38]; + u64 *first; + u64 *second; + char pad40[0x1C]; + Object *child; +} Data; +extern Data *func_00476ED0(Object *); +extern void func_00484CF0(Object *, u64 *); +static inline s32 initialized(u64 *p) +{ + return *p != 0; +} +void func_00484EB0(Object *p, u64 *first, u64 *second) +{ + Data *d = func_00476ED0(p); + if (d) { + d->second = second; + d->first = first; + if (first && !initialized(first)) + func_00484CF0(p, first); + if (d->child && d->second && !initialized(d->second)) + func_00484CF0(d->child, d->second); + } +} diff --git a/src/pal/game/0048AA58.c b/src/pal/game/0048AA58.c new file mode 100644 index 000000000..9679007e0 --- /dev/null +++ b/src/pal/game/0048AA58.c @@ -0,0 +1,29 @@ +#include "common.h" +typedef struct { + char pad[7]; + u8 flags, active; + char rest[0x47]; +} Entry; +typedef void (*Callback)(void *, f32); +extern Entry D_00355DC0[]; +extern void *func_0011A518(void *, s32, u32); +extern void func_0048B280(void *, Entry **, s32, Callback, void *); +s32 func_0048AA58(void *manager, s32 wait, s32 timeout, Callback callback, void *user) +{ + Entry *list[3]; + Entry *p; + Entry **out; + s32 i; + func_0011A518(list, 0, 12); + p = D_00355DC0; + out = list; + for (i = 0; i < 3; i++, p++) { + if (p->active) { + list[i] = p; + p->flags |= 8; + } + } + if (wait) + func_0048B280(manager, list, timeout, callback, user); + return 1; +} 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/0048C420.c b/src/pal/game/0048C420.c new file mode 100644 index 000000000..28881c51c --- /dev/null +++ b/src/pal/game/0048C420.c @@ -0,0 +1,22 @@ +#include "common.h" + +extern u8 *D_002215D8; +extern void func_00453F30(void *, const void *, u32); +extern u8 *func_0048C2D0(u32, u8 **, const u8 *); + +s32 func_0048C420(const u8 *source, u8 **cursor, const u8 *limit) +{ + s32 i; + + func_00453F30(D_002215D8 + 0x3014, source, 4); + source += 4; + (*(u8 **)(D_002215D8 + 0x3018)) = func_0048C2D0((u32)(*(s32 *)(D_002215D8 + 0x3014)) << 5, cursor, limit); + if ((*(u8 **)(D_002215D8 + 0x3018)) == 0) { + return 1; + } + for (i = 0; i < (*(s32 *)(D_002215D8 + 0x3014)); i++) { + func_00453F30((*(u8 **)(D_002215D8 + 0x3018)) + (i << 5), source, 32); + source += 32; + } + return 0; +} 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/00499120.c b/src/pal/game/00499120.c new file mode 100644 index 000000000..8d15dbac3 --- /dev/null +++ b/src/pal/game/00499120.c @@ -0,0 +1,23 @@ +#include "common.h" +extern s32 D_0021EE54, D_0021EE58; +s32 D_0021F638 = 0; +extern s32 func_004990A0(s32, s32), func_00506BB8(void); +s32 func_00499120(s32 mode) +{ + s32 result; + if (D_0021EE54 != 1) { + D_0021F638 = 0; + result = func_004990A0(0, mode); + if (!D_0021EE54 && D_0021EE58 == 1) { + s32 other = func_004990A0(1, mode); + if ((other && other < result) || !result) { + result = other; + D_0021F638 = 1; + } + } + } else { + D_0021F638 = func_00506BB8(); + result = func_004990A0(func_00506BB8(), mode); + } + return result; +} diff --git a/src/pal/game/0049F120.c b/src/pal/game/0049F120.c new file mode 100644 index 000000000..be99f3002 --- /dev/null +++ b/src/pal/game/0049F120.c @@ -0,0 +1,28 @@ +#include "common.h" +typedef struct { + char pad[0x14]; + s32 choice; + void (*callback)(s32); + char rest[0x1E4]; +} State; +extern State D_00307320[], D_00307174[]; +extern void func_0049FC68(s32); +extern s32 func_004E17B8(void); +void func_0049F120(s32 index) +{ + State *p; + if (index == 4) + p = D_00307174; + else + p = D_00307320 + index; + func_0049FC68(index); + if (!p->choice) { + func_004E17B8(); + func_004E17B8(); + } else { + func_004E17B8(); + func_004E17B8(); + } + if (p->callback) + p->callback(p->choice); +} diff --git a/src/pal/game/004A2D58.c b/src/pal/game/004A2D58.c new file mode 100644 index 000000000..3c87a0747 --- /dev/null +++ b/src/pal/game/004A2D58.c @@ -0,0 +1,21 @@ +#include "common.h" +s32 D_0021F708 = 0; +extern s32 func_004A2B18(void), func_004E17B8(void), func_00157FA8(void); +extern const char *func_0045E850(s32); +extern void func_004A2E80(s32), func_004A3010(s32), func_0049BED8(s32, s32); +extern s32 func_004E3138(s32, s32, void *); +extern void func_0049F4C8(s32, const char *, void (*)(s32), s32, s32, s32, s32, f32); +void func_004A2D58(void) +{ + if (!func_004A2B18()) { + D_0021F708 = 1; + func_0049F4C8(0, func_0045E850(0x377F), func_004A2E80, 0, 0, 0, 0, -1.0f); + } else { + func_004E3138(11, 0, 0); + func_004E17B8(); + while (func_00157FA8()) { + } + func_004A3010(1); + func_0049BED8(0, 33); + } +} 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/004A9288.c b/src/pal/game/004A9288.c new file mode 100644 index 000000000..ab38ad0d7 --- /dev/null +++ b/src/pal/game/004A9288.c @@ -0,0 +1,12 @@ +#include "common.h" +s32 func_004A9288(f32 angle, s32 count) +{ + if (angle < 0.001f && angle > -0.001f) + angle = 0; + if (angle < 0) + angle += 360.0f; + else if (angle >= 360.0f) + angle -= 360.0f; + angle /= (360.0f / count); + return (s32)angle; +} diff --git a/src/pal/game/004AA638.c b/src/pal/game/004AA638.c new file mode 100644 index 000000000..07b6d4132 --- /dev/null +++ b/src/pal/game/004AA638.c @@ -0,0 +1,21 @@ +#include "common.h" +typedef struct { + char pad[0x88]; + f32 value; + char pad8C[0xC]; + u32 flags; + char tail[0x1C]; +} State; +extern State D_00308208[]; +extern s32 D_00221750; +extern s32 func_00506BB8(void), func_004A2798(s32 *, s32); +extern s32 func_005052D0(s32, f32, f32), func_005064A8(s32, f32); +void func_004AA638(void) +{ + s32 index = func_00506BB8(); + f32 value = ((State *)((u32)index * 0xB8 + (u32)D_00308208))->value; + f32 inv = 1.0f - value; + func_005052D0(func_004A2798(&D_00221750, 1), inv * -0.1f + 0.5f, inv * 0.0f + 0.5f); + func_005064A8(func_004A2798(&D_00221750, 1), value); + D_00308208[index].flags |= 0x100; +} 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/004B0028.c b/src/pal/game/004B0028.c new file mode 100644 index 000000000..36d74961b --- /dev/null +++ b/src/pal/game/004B0028.c @@ -0,0 +1,19 @@ +#include "common.h" +f32 D_0021F7D8 = 0.0f; +s32 D_0021F7DC = 0; +extern s32 D_002217B0; +extern s32 func_004A2798(s32 *, s32); +extern s32 func_005064A8(s32, f32), func_005052D0(s32, f32, f32); +extern f32 func_00475FB0(f32, f32, f32); +void func_004B0028(void) +{ + D_0021F7D8 -= 0.05f; + func_005064A8(func_004A2798(&D_002217B0, 100), D_0021F7D8); + if (D_0021F7D8 <= 0.0f) + D_0021F7DC &= ~8; + else if (D_0021F7D8 < 1.0f) { + s32 id = func_004A2798(&D_002217B0, 100); + f32 y = func_00475FB0(0.74f, 0.7f, D_0021F7D8); + func_005052D0(id, 0.128f, y); + } +} 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/004B2508.c b/src/pal/game/004B2508.c new file mode 100644 index 000000000..8b539937c --- /dev/null +++ b/src/pal/game/004B2508.c @@ -0,0 +1,15 @@ +#include "common.h" +extern s32 func_00499B00(void), func_0011D920(char *, const char *, ...); +extern s32 func_004A2798(s32 *, s32), func_005062D0(u32, const char *), func_00506000(u32, s32); +extern s32 D_00221828; +extern char D_00309764[]; +extern const char D_0021F830[], D_0021F840[], D_0021F848[]; +void func_004B2508(void) +{ + s32 time = func_00499B00(); + s32 minutes = time / 60000; + s32 seconds = (time % 60000) / 1000; + func_0011D920(D_00309764, D_0021F830, minutes < 10 ? D_0021F840 : D_0021F848, minutes, seconds < 10 ? D_0021F840 : D_0021F848, seconds); + func_005062D0(func_004A2798(&D_00221828, 25), D_00309764); + func_00506000(func_004A2798(&D_00221828, 25), time != -1); +} 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/004B65E8.c b/src/pal/game/004B65E8.c new file mode 100644 index 000000000..36f4cd9d0 --- /dev/null +++ b/src/pal/game/004B65E8.c @@ -0,0 +1,14 @@ +#include "common.h" + +extern s32 D_00221868; +extern s32 func_004A2798(s32 *, s32), func_005053D0(s32, f32); +extern f32 func_00505540(s32); +void func_004B65E8(void) +{ + s32 handle = func_004A2798(&D_00221868, 1); + if (func_00505540(handle) < 0.5f) + func_005053D0(handle, func_00505540(handle) + 0.02f); + handle = func_004A2798(&D_00221868, 11); + if (func_00505540(handle) > 0.5f) + func_005053D0(handle, func_00505540(handle) - 0.02f); +} 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/004C3380.c b/src/pal/game/004C3380.c new file mode 100644 index 000000000..8c9020b1e --- /dev/null +++ b/src/pal/game/004C3380.c @@ -0,0 +1,22 @@ +#include "common.h" +typedef struct { + s32 pad0, pad4; + s32 flags; + s32 padC, value; + char pad14[0x50]; + f32 current; + char tail[0xC]; +} State; +extern State D_0030B7F8[]; +extern s32 D_00221988; +extern s32 func_00506BB8(void); +extern f32 func_004760C0(f32 *, f32, f32, f32); +extern s32 func_005052D0(s32, f32, f32); +void func_004C3380(void) +{ + State *p = D_0030B7F8 + func_00506BB8(); + if (func_004760C0(&p->current, (f32)p->value * -0.22596153616905212f, 0.2f, 0.01f) != 0.0f) + func_005052D0(D_00221988, 0.5f, p->current + 0.5f); + else + p->flags &= ~8; +} diff --git a/src/pal/game/004C3E20.c b/src/pal/game/004C3E20.c new file mode 100644 index 000000000..3c7004d9c --- /dev/null +++ b/src/pal/game/004C3E20.c @@ -0,0 +1,26 @@ +#include "common.h" +typedef struct { + char pad[0xC]; + s32 selection; + char tail[0x64]; +} State; +typedef struct { + s32 first, second, third; +} Resource; +extern State D_0030B7F8[]; +extern Resource D_003D21F0[]; +extern s32 D_00221980; +extern s32 func_00506BB8(void), func_004A2798(s32 *, s32); +extern u32 func_004C3D08(s32, s32); +extern s32 func_005063C0(s32, u32); +extern void func_0049CE90(s32, s32, s32, s32); +void func_004C3E20(void) +{ + s32 selected = D_0030B7F8[func_00506BB8()].selection; + s32 id = func_004A2798(&D_00221980, D_003D21F0[selected].first); + func_005063C0(id, func_004C3D08(selected, 1)); + { + s32 index = func_00506BB8(); + func_0049CE90(index, 0, func_004A2798(&D_00221980, D_003D21F0[selected].second), 0); + } +} diff --git a/src/pal/game/004C4078.c b/src/pal/game/004C4078.c new file mode 100644 index 000000000..6eb497f8b --- /dev/null +++ b/src/pal/game/004C4078.c @@ -0,0 +1,21 @@ +#include "common.h" +typedef struct { + s32 f0, f4, flags, fC, selection; + char tail[0x60]; +} State; +extern State D_0030B7F8[]; +extern s32 D_00221988; +extern s32 func_00506BB8(void), func_004A2798(s32 *, s32), func_005073F0(u32); +extern void func_004C3F68(void), func_004C3FD0(void), func_004985F0(s32); +extern s32 func_00498320(s32 *, s32, s32, void (*)(void), void (*)(void), s32 (*)(s32)); +void func_004C4078(s32 reverse) +{ + State *p = D_0030B7F8 + func_00506BB8(); + if (func_00498320(&p->selection, 3, reverse, func_004C3F68, func_004C3FD0, 0)) { + func_004985F0(0); + func_005073F0(func_004A2798(&D_00221988, 83)); + func_005073F0(func_004A2798(&D_00221988, 80)); + func_005073F0(func_004A2798(&D_00221988, 81)); + p->flags |= 8; + } +} diff --git a/src/pal/game/004C4648.c b/src/pal/game/004C4648.c new file mode 100644 index 000000000..96b55c44e --- /dev/null +++ b/src/pal/game/004C4648.c @@ -0,0 +1,22 @@ +#include "common.h" +typedef struct { + s32 a, b, c, selection; + char tail[0x64]; +} State; +extern State D_0030B7F8[]; +extern s32 func_00506BB8(void), func_00498518(s32); +extern char *func_00511CC0(s32); +extern s32 func_0054BD48(void *, s32), func_0054B0A0(void *, s32), func_0054B6F8(s32, s32); +extern u32 func_00499650(s32, s32); +u32 func_004C4648(s32 choice) +{ + s32 index = func_00506BB8(); + State *s = D_0030B7F8 + index; + char *p = func_00511CC0(index); + s32 item = func_00498518(s->selection); + if (func_0054BD48(*(void **)(p + 0x26E4), item) == choice) + return func_00499650(4, 3); + if (!choice || (func_0054B0A0(*(void **)(p + 0x26E4), choice) && func_0054B6F8(item, choice))) + return 0x80808080; + return 0x80404040; +} 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/004C9590.c b/src/pal/game/004C9590.c new file mode 100644 index 000000000..c710fd686 --- /dev/null +++ b/src/pal/game/004C9590.c @@ -0,0 +1,31 @@ +#include "common.h" +typedef struct { + s32 mode, flags; + char pad[0x1304]; + char context[0x6C]; +} State; +extern State D_0030D188; +extern void func_004CA0E8(void), func_004C9988(void), func_004C9A98(void), func_004C9D20(void); +extern void func_00502520(void *); +extern s32 func_004A2468(void *); +void func_004C9590(void *descriptor) +{ + switch (D_0030D188.mode) { + case 0: + D_0030D188.mode = 2; + break; + case 2: + func_004CA0E8(); + break; + case 1: + func_00502520(descriptor); + break; + } + if (D_0030D188.flags & 1) + func_004C9988(); + func_004A2468(D_0030D188.context); + if (D_0030D188.flags & 2) + func_004C9A98(); + if (D_0030D188.flags & 4) + func_004C9D20(); +} diff --git a/src/pal/game/004CB7E0.c b/src/pal/game/004CB7E0.c new file mode 100644 index 000000000..852735e29 --- /dev/null +++ b/src/pal/game/004CB7E0.c @@ -0,0 +1,33 @@ +#include "common.h" + +typedef struct Type1 { + s32 f0, f4, f8; +} Type1; +extern Type1 D_0030E9D8[]; +extern s32 func_004CBE30(s32); +extern void func_004CB8E8(s32), func_004CBD68(s32), func_0049CF80(s32, s32), func_0049D060(s32, s32, s32), func_0049CF38(s32, s32); +void func_004CB7E0(void) +{ + if (D_0030E9D8[0].f8 & 1) { + s32 i; + if (D_0030E9D8[0].f4 != -1) { + if (!func_004CBE30(D_0030E9D8[0].f4)) + D_0030E9D8[0].f4 = -1; + } + i = 0; + do { + func_004CB8E8(i); + if (D_0030E9D8[0].f4 == -1 && func_004CBE30(i)) + D_0030E9D8[0].f4 = i; + i++; + } while (i < 4); + if (D_0030E9D8[0].f4 == -1) + func_0049CF80(0, 0); + else { + func_0049D060(0, 0, 1); + func_0049CF38(0, 0); + } + func_004CBD68(D_0030E9D8[0].f4); + D_0030E9D8[0].f8 &= ~1; + } +} 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/004CDB70.c b/src/pal/game/004CDB70.c new file mode 100644 index 000000000..837ffdc8a --- /dev/null +++ b/src/pal/game/004CDB70.c @@ -0,0 +1,28 @@ +#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); +const char *func_004CDB70(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(0x33A9); + break; + case 1: + result = func_0045E850(0x33AA); + break; + case 2: + result = func_0045E850(0x33AB); + break; + case 3: + result = func_0045E850(0x33AC); + break; + default: + result = func_0045E850(0x33AD); + break; + } + return result; +} diff --git a/src/pal/game/004CFA08.c b/src/pal/game/004CFA08.c new file mode 100644 index 000000000..8d346ed60 --- /dev/null +++ b/src/pal/game/004CFA08.c @@ -0,0 +1,35 @@ +#include "common.h" + +extern s32 func_00506BB8(void); +extern void func_00502520(void *); +extern void func_004CFE50(void); +extern void func_004CFC10(void), func_004CFC50(void), func_004CFD10(void); +extern s32 func_004A2468(void *); +typedef struct Type1 { + s32 f0, f4, f8; + char pad[0x1030]; +} Type1; +extern Type1 D_0030F820[]; +/* Process pending state changes and refresh the current slot's menu. */ +void func_004CFA08(void *descriptor) +{ + Type1 *p = D_0030F820 + func_00506BB8(); + switch (p->f0) { + case 1: + p->f0 = 0; + break; + case 2: + func_00502520(descriptor); + break; + case 0: + func_004CFE50(); + break; + } + if (p->f8 & 1) + func_004CFC10(); + if (p->f8 & 2) + func_004CFC50(); + func_004A2468((char *)p + 0xF90); + if (p->f8 & 4) + func_004CFD10(); +} 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/004D1750.c b/src/pal/game/004D1750.c new file mode 100644 index 000000000..8d32ba794 --- /dev/null +++ b/src/pal/game/004D1750.c @@ -0,0 +1,27 @@ +/* cflags: -mno-split-addresses */ +#include "common.h" +extern void func_004D0ED8(void *, s32); +extern s32 func_004A2798(void *, s32); +extern const char *func_0045E850(s32); +extern s32 func_005062D0(u32, const char *); +extern u8 D_0021DEB8[]; +extern s32 D_00220A7C; +void func_004D1750(char *p, s32 reverse) +{ + func_004D0ED8(p, reverse); + { + u8 *value = &D_0021DEB8[*(s32 *)p]; + if (*value == 8) { + if (!reverse) + ++*value; + else + --*value; + } + } + if (p) { + s32 id = func_004A2798(*(char **)(p + 0x70) + 4, 2); + const char *text = func_0045E850(*(s32 *)(p + (D_0021DEB8[*(s32 *)p] << 2) + 0x1C)); + func_005062D0(id, text); + } + D_00220A7C = -D_0021DEB8[*(s32 *)p]; +} diff --git a/src/pal/game/004D2CB0.c b/src/pal/game/004D2CB0.c new file mode 100644 index 000000000..85a99f742 --- /dev/null +++ b/src/pal/game/004D2CB0.c @@ -0,0 +1,24 @@ +#include "common.h" +typedef struct { + s32 state, pad, flags; + char rest[0x150]; +} State; +extern State D_0031B050[]; +extern s32 func_00506BB8(void); +extern void func_004A2090(void *), func_004A2048(void *); +extern s32 func_004E3138(s32, s32, void *); +extern s32 func_004E17B8(void); +void func_004D2CB0(s32 forward) +{ + State *p = D_0031B050 + func_00506BB8(); + char *context = (char *)p + 0xF0; + if (*(s32 *)(context + 0x50) >= 2) { + if (forward) + func_004A2090(context); + else + func_004A2048(context); + func_004E3138(0, 0, 0); + func_004E17B8(); + p->flags |= 6; + } +} diff --git a/src/pal/game/004D4058.c b/src/pal/game/004D4058.c new file mode 100644 index 000000000..582d4db73 --- /dev/null +++ b/src/pal/game/004D4058.c @@ -0,0 +1,17 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L01_0047DBB0.c func_L01_0047DE68. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + s32 prefix[3]; + void *buffers[4]; +} BufferGroup; +extern BufferGroup D_003D9C48; +extern void func_00453E20(void *, s32, s32); +void func_004D4058(void) +{ + s32 i; + for (i = 0; i < 4; i++) + func_00453E20(D_003D9C48.buffers[i], 0, 2048); +} diff --git a/src/pal/game/004D48B8.c b/src/pal/game/004D48B8.c new file mode 100644 index 000000000..fafe70371 --- /dev/null +++ b/src/pal/game/004D48B8.c @@ -0,0 +1,21 @@ +#include "common.h" +s32 D_0021FC2C = 0; +extern u8 D_002214E0; +extern s32 func_00466458(s32, void *, s32 (*)(void), void (*)(void)); +extern s32 func_0047FEB0(s32, s32, s32, s32, u8 *); +extern void func_004D4E00(void); +void func_004D48B8(void) +{ + switch (D_0021FC2C) { + case 0: + func_00466458(6, 0, 0, 0); + D_002214E0 = 1; + case 1: + func_0047FEB0(4, 1, 1, 0, 0); + D_0021FC2C++; + break; + case 2: + func_004D4E00(); + break; + } +} diff --git a/src/pal/game/004D4A88.c b/src/pal/game/004D4A88.c new file mode 100644 index 000000000..a69a9c11b --- /dev/null +++ b/src/pal/game/004D4A88.c @@ -0,0 +1,35 @@ +#include "common.h" + +s32 D_0021FC2C = 0, D_0021FC34 = 0; +extern s32 func_00466450(void), func_00159C58(s32); +extern s32 func_00466458(s32, void *, s32 (*)(void), void (*)(void)); +extern void func_004D4E08(void), func_004D5240(void), func_004D4E00(void); +void func_004D4A88(void) +{ + switch (D_0021FC2C) { + case 0: + func_00466458(1, 0, 0, 0); + func_004D4E08(); + D_0021FC34 = 30; + D_0021FC2C++; + return; + case 1: { + s32 timer; + func_004D4E08(); + timer = D_0021FC34; + if (timer > 0) { + timer--; + D_0021FC34 = timer; + } + D_0021FC34 = timer; + if (!timer) + func_004D5240(); + break; + } + case 2: + if (func_00466450() == 1 || func_00466450() == 18) + func_00159C58(1); + func_004D4E00(); + break; + } +} diff --git a/src/pal/game/004D4C10.c b/src/pal/game/004D4C10.c new file mode 100644 index 000000000..67c989c16 --- /dev/null +++ b/src/pal/game/004D4C10.c @@ -0,0 +1,32 @@ +#include "common.h" +s32 D_0021FC2C = 0, D_0021FC38 = 0; +extern s32 func_00469978(void); +extern s32 func_00466458(s32, void *, s32 (*)(void), void (*)(void)); +extern void func_004D4E08(void), func_004D5240(void), func_004D4E00(void); +void func_004D4C10(void) +{ + switch (D_0021FC2C) { + case 0: + func_00466458(3, 0, func_00469978, 0); + func_004D4E08(); + D_0021FC38 = 30; + D_0021FC2C++; + break; + case 1: + func_004D4E08(); + { + s32 count = D_0021FC38; + if (count > 0) { + count--; + D_0021FC38 = count; + } + D_0021FC38 = count; + } + if (!D_0021FC38) + func_004D5240(); + break; + case 2: + func_004D4E00(); + break; + } +} diff --git a/src/pal/game/004D4D38.c b/src/pal/game/004D4D38.c new file mode 100644 index 000000000..343ad95e5 --- /dev/null +++ b/src/pal/game/004D4D38.c @@ -0,0 +1,48 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/3B3050.c func_003B3910. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +s32 D_0021FC28 = 0; +extern void func_004D49F0(void); +extern void func_004D4958(void); +extern void func_004D4B78(void); +extern void func_004D4A88(void); +extern void func_004D4C10(void); +extern void func_004D4CD0(void); +extern void func_004D48B8(void); +extern void func_004D4818(void); +extern s32 func_004800B0(s32, s32); +void func_004D4D38(void) +{ + switch (D_0021FC28) { + case 1: + func_004D49F0(); + break; + case 2: + func_004D4958(); + break; + case 3: + func_004D4B78(); + break; + case 7: + func_004D4A88(); + break; + case 8: + func_004D4C10(); + break; + case 5: + func_004D4CD0(); + break; + case 4: + func_004D48B8(); + break; + case 6: + func_004D4818(); + break; + case 0: + default: + func_004800B0(0, 0); + break; + } +} 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/004D9930.c b/src/pal/game/004D9930.c new file mode 100644 index 000000000..0a487c2c0 --- /dev/null +++ b/src/pal/game/004D9930.c @@ -0,0 +1,47 @@ +#include "common.h" +typedef struct { + s32 f0, f4; + void *data; + char tail[12]; +} Item; +typedef struct { + char pad[0x34]; + Item *items; + char tail[0x18]; + s32 count, index; +} List; +typedef struct { + s32 f0, f4; + s32 flags; + s32 handle; + char pad[0x330]; + List list; + char tail[0x14]; +} State; +extern State D_00320178[]; +extern s32 D_00221C28; +extern char D_001CE268[]; +extern s32 func_00506BB8(void), func_0049A9D8(void *, s32), func_004A2798(s32 *, s32), func_005071B8(s32, u32); +extern void func_0049AA18(s32); +static inline Item *selected(List *l) +{ + if (l->index < 0) + return 0; + return l->items + l->index; +} +void func_004D9930(void) +{ + State *p = D_00320178 + func_00506BB8(); + List *l = &p->list; + if (l->count > 0) { + Item *item; + if (p->handle) { + func_0049AA18(p->handle); + p->handle = 0; + } + item = selected(l); + p->handle = func_0049A9D8(D_001CE268 + (*(s32 *)item->data) * 8, -1); + func_005071B8(func_004A2798(&D_00221C28, 4), p->handle); + } + p->flags &= ~2; +} diff --git a/src/pal/game/004DBC50.c b/src/pal/game/004DBC50.c new file mode 100644 index 000000000..f45989a60 --- /dev/null +++ b/src/pal/game/004DBC50.c @@ -0,0 +1,30 @@ +#include "common.h" + +extern void func_004A2090(void *), func_004A2048(void *), func_004985F0(s32); +typedef struct Type1 { + char pad[0x50]; + s32 f50, f54; +} Type1; +extern Type1 D_00322EA4[]; +typedef struct Type2 { + s32 f0; + u32 f4; +} Type2; +extern Type2 D_00321B98[]; +void func_004DBC50(s32 direction) +{ + if (D_00322EA4[0].f50 >= 2) { + s32 previous = D_00322EA4[0].f54; + if (direction) + func_004A2090(D_00322EA4); + else + func_004A2048(D_00322EA4); + if (previous == D_00322EA4[0].f54) + func_004985F0(4); + else + func_004985F0(0); + D_00321B98[0].f4 |= 2; + return; + } + func_004985F0(4); +} diff --git a/src/pal/game/004DFED8.c b/src/pal/game/004DFED8.c new file mode 100644 index 000000000..d04266c8a --- /dev/null +++ b/src/pal/game/004DFED8.c @@ -0,0 +1,41 @@ +/* cflags: -fno-schedule-insns */ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_002E3820 (src/game/002E3820-rc2.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern u8 *D_00221F20; +extern u8 *D_00221DF8; +extern u8 *D_00221DF4; +extern s32 D_0021DAB4; +extern s32 D_0021DAB0; +extern void func_0046A228(void); +extern u8 *func_004E8AB0(void); + +/* PAL retail reconstruction; related command-chain algorithm is RAC2 + * 002E3820, src/game/002E3820-rc2.c. */ +void func_004DFED8(void) +{ + s32 tag; + u8 *packet; + + D_00221DF8 = D_00221F20; + tag = 0x20000000; + D_00221F20 += 16; + *(s32 *)D_00221DF4 = tag; + packet = D_00221DF4; + *(u8 **)(packet + 4) = D_00221F20; + *(s32 *)(D_00221DF4 + 8) = 0; + *(s32 *)(D_00221DF4 + 12) = 0; + func_0046A228(); + func_004E8AB0(); + *(s32 *)D_00221F20 = tag; + *(u8 **)(D_00221F20 + 4) = D_00221DF4 + 16; + *(s32 *)(D_00221F20 + 8) = 0; + *(s32 *)(D_00221F20 + 12) = 0; + D_00221F20 += 16; + *(s32 *)D_00221DF8 = tag; + *(u8 **)(D_00221DF8 + 4) = D_00221F20; + *(s32 *)(D_00221DF8 + 8) = 0; + *(s32 *)(D_00221DF8 + 12) = 0; + D_0021DAB0 = D_0021DAB4; +} 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/004E87F8.c b/src/pal/game/004E87F8.c new file mode 100644 index 000000000..ae3cbe9f3 --- /dev/null +++ b/src/pal/game/004E87F8.c @@ -0,0 +1,17 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_002FC468 (src/game/002FC468.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +extern u8 *D_00221F20; +extern void func_00453FE8(void *destination, const void *source, u32 bytes); + +void func_004E87F8(u32 address, const void *source, u32 count) +{ + *(u32 *)(D_00221F20 + 0) = 0x10000000 | count; + *(u32 *)(D_00221F20 + 4) = 0; + *(u32 *)(D_00221F20 + 8) = 0x01000404; + *(u32 *)(D_00221F20 + 12) = address | (count << 16) | 0x6C000000; + D_00221F20 += 16; + func_00453FE8(D_00221F20, source, count << 4); + D_00221F20 += count << 4; +} 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/004E8BD8.c b/src/pal/game/004E8BD8.c new file mode 100644 index 000000000..faa3413d5 --- /dev/null +++ b/src/pal/game/004E8BD8.c @@ -0,0 +1,19 @@ +#include "common.h" +extern u32 *D_00221F20; +extern char D_00171570[], D_00171600[]; +extern void func_00453F30(void *, const void *, u32); +void func_004E8BD8(void) +{ + D_00221F20[0] = 0x30000009; + D_00221F20[1] = (u32)D_00171570; + D_00221F20[2] = 0; + D_00221F20[3] = 0x50000009; + D_00221F20 += 4; + D_00221F20[0] = 0x10000003; + D_00221F20[1] = 0; + D_00221F20[2] = 0; + D_00221F20[3] = 0x50000003; + D_00221F20 += 4; + func_00453F30(D_00221F20, D_00171600, 0x30); + D_00221F20 += 12; +} diff --git a/src/pal/game/004EB520.c b/src/pal/game/004EB520.c new file mode 100644 index 000000000..0c30aba58 --- /dev/null +++ b/src/pal/game/004EB520.c @@ -0,0 +1,37 @@ +/* Reference: OpenRAC/rac2-decomp @ 99f35ac2c084fc59cdf3d631f8f960a825e7a49c; func_L00_0037DD18 (src/levels/shared/L00_0037B6F0.c). + * Independently reconstructed and checked against RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + void *object; + u32 key; + s32 timer; + u32 unknownC; +} Entry; + +extern Entry D_00328548[32]; + +void func_004EB520(u32 key, void *object, s32 timer) +{ + s32 i = 0; + Entry *entry; + + if (D_00328548[0].key == 0) { + D_00328548[0].object = object; + D_00328548[0].key = key; + D_00328548[0].timer = timer; + return; + } +next: + i++; + if (i >= 32) { + return; + } + if (D_00328548[i].key != 0) { + goto next; + } + entry = &D_00328548[i]; + entry->key = key; + entry->object = object; + entry->timer = timer; +} diff --git a/src/pal/game/004EBDD8.c b/src/pal/game/004EBDD8.c new file mode 100644 index 000000000..b2a438ab8 --- /dev/null +++ b/src/pal/game/004EBDD8.c @@ -0,0 +1,31 @@ +#include "common.h" +extern s32 func_001588A8(s32), func_00157FA8(void); +extern void func_00489F30(void); +extern s32 func_0045DFC8(s16, s16, s16, s32, f32, f32, f32, f32); +extern s32 D_0021EE54; +typedef struct { + char pad[0x4E00]; + u16 a; + char gap[0xA]; + u16 b; +} State; +typedef struct { + char pad[8]; + s16 a, b; +} Result; +extern State D_001F1480[]; +extern Result D_00327A60[]; +void func_004EBDD8(void) +{ + func_001588A8(0xCD); + func_00489F30(); + func_00157FA8(); + if (D_0021EE54 != 1) { + if (!D_001F1480[0].a) + func_0045DFC8(0x2FAB, 0x680, 2, 0, 0.0f, 1.0f, 0.0f, 64.0f); + else if (!D_001F1480[0].b) + func_0045DFC8(0x2FAC, 0x681, 2, 0, 0.0f, 1.0f, 0.0f, 64.0f); + } + D_00327A60[0].a = -1; + D_00327A60[0].b = -1; +} diff --git a/src/pal/game/004EFAD0.c b/src/pal/game/004EFAD0.c new file mode 100644 index 000000000..00c991bfe --- /dev/null +++ b/src/pal/game/004EFAD0.c @@ -0,0 +1,15 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/3AA9D8.c func_003AACC0. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + f32 prefix[2]; + f32 first; + f32 second; +} Curve; +extern f32 func_004EFE10(f32, f32, f32, f32, f32); +void func_004EFAD0(const Curve *curve, f32 *output, f32 factor) +{ + *output = func_004EFE10(factor, 0.0f, curve->first, curve->second, 1.0f); +} 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/004F0B38.c b/src/pal/game/004F0B38.c new file mode 100644 index 000000000..742fe7b69 --- /dev/null +++ b/src/pal/game/004F0B38.c @@ -0,0 +1,37 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/3B0048.c func_003B0470. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u8 prefix[0x48]; + s32 base; + s32 size; + u8 gap[8]; + s32 cursor; +} Ring; +void func_004F0B38(s32 *first, s32 *first_size, s32 *second, s32 *second_size, const Ring *ring, s32 position) +{ + s32 size = ring->size; + s32 cursor = ring->cursor; + s32 remainder = (((position + size) - cursor) - 0x400) % size; + if ((u32)(position - cursor) < 0x400U) { + *first = ring->base; + *first_size = 0; + *second = ring->base; + *second_size = 0; + return; + } + remainder = (remainder / 1024) * 1024; + if (size - cursor >= remainder) { + *first = ring->base + cursor; + *first_size = remainder; + *second = 0; + *second_size = 0; + return; + } + *first = ring->base + cursor; + *first_size = ring->size - ring->cursor; + *second = ring->base; + *second_size = remainder - (ring->size - ring->cursor); +} diff --git a/src/pal/game/004F1C08.c b/src/pal/game/004F1C08.c new file mode 100644 index 000000000..6a7e2cc04 --- /dev/null +++ b/src/pal/game/004F1C08.c @@ -0,0 +1,18 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/3B0FF0.c func_003B1530. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u32 base; + u32 descriptor; + s32 entries; +} Transfer; +s32 func_004F1C08(const Transfer *transfer, u32 address) +{ + s32 bytes = transfer->entries * 16 + 16; + u32 end = (transfer->descriptor + bytes) & 0x0FFFFFFF; + if (address == end) + return 0; + return (address - transfer->base) >> 11; +} 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/00501F70.c b/src/pal/game/00501F70.c new file mode 100644 index 000000000..1b69820ea --- /dev/null +++ b/src/pal/game/00501F70.c @@ -0,0 +1,27 @@ +#include "common.h" +typedef struct { + s32 a, b, c; +} Entry; +typedef struct { + s32 pad; + char *table; +} Manager; +extern char *D_0021DE54; +extern void func_00504BF0(Entry *, s32, s32, s32, s32); +extern void *func_00501648(void *); +extern s32 func_00504E10(void *, const Entry *); +extern void func_00500F50(void *); +void func_00501F70(Manager *manager) +{ + char *state = manager->table; + void *p = *(void **)(state + (*(s32 *)(state + 0x14) << 2)); + if (p) { + s32 value = *(s32 *)(D_0021DE54 + 0x1C4); + if (value) { + Entry entry; + func_00504BF0(&entry, 0, 1, 0x10000, value); + func_00504E10(func_00501648(p), &entry); + } + func_00500F50(p); + } +} diff --git a/src/pal/game/00502D28.c b/src/pal/game/00502D28.c new file mode 100644 index 000000000..633e8137c --- /dev/null +++ b/src/pal/game/00502D28.c @@ -0,0 +1,29 @@ +#include "common.h" +typedef struct { + s32 f0; + char *state; +} Manager; +extern Manager D_00222138[]; +extern Manager *func_00502150(void); +extern s32 func_004490A8(s32); +extern char *func_00449060(s32); +extern void func_00502C10(f32, f32, f32, f32), func_00502C38(void); +s32 D_00220B9C = 0; +extern s32 *D_0021DE2C; +extern u8 D_00171E6B[]; +void func_00502D28(void) +{ + Manager *m = D_00222138; + char *state; + char *p; + if (!m->state) + m = func_00502150(); + state = m->state; + p = func_00449060(func_004490A8(state ? *(s32 *)(state + 0x14) : -1)); + D_00220B9C = 0; + if (*D_0021DE2C && D_00171E6B[0]) + func_00502C10(0.0f, 0.0f, 1.0f, *(f32 *)(p + 0x14)); + else + func_00502C10(0.0f, 0.0f, *(f32 *)(p + 0x10), *(f32 *)(p + 0x14)); + func_00502C38(); +} diff --git a/src/pal/game/005037A8.c b/src/pal/game/005037A8.c new file mode 100644 index 000000000..8bdbef82c --- /dev/null +++ b/src/pal/game/005037A8.c @@ -0,0 +1,25 @@ +#include "common.h" +typedef struct { + s32 pad; + void *table; +} Manager; +extern Manager D_00222138[]; +extern u32 func_00503A40(void *), func_005034B8(void *), func_005034D8(u32); +extern Manager *func_00502150(void); +extern s32 func_00501E70(Manager *, u32); +char *func_005037A8(char *data, u32 *id) +{ + char *result = 0; + *id = 0; + if (func_00503A40(data) == 0x40502) { + Manager *manager; + *id = func_005034B8(data + 0x10); + result = data + 0x14; + if (D_00222138[0].table) + manager = D_00222138; + else + manager = func_00502150(); + func_00501E70(manager, func_005034D8(*id)); + } + return result; +} diff --git a/src/pal/game/00504C20.c b/src/pal/game/00504C20.c new file mode 100644 index 000000000..546232aba --- /dev/null +++ b/src/pal/game/00504C20.c @@ -0,0 +1,26 @@ +#include "common.h" +typedef struct { + s32 a, b, c; +} Entry; +extern Entry *func_00504C08(Entry *); +extern void func_00504BF0(Entry *, s32, s32, s32, s32); +Entry *func_00504C20(Entry *entries) +{ + Entry *p = entries; + s32 count = 15; + Entry value; + do { + func_00504C08(p); + p++; + count--; + } while (count != -1); + func_00504BF0(&value, 0, 0, 0, 0); + { + Entry *next = entries; + do { + *next = value; + next++; + } while ((s32)next < (s32)(entries + 16)); + } + return entries; +} 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/00504F78.c b/src/pal/game/00504F78.c new file mode 100644 index 000000000..6027670b2 --- /dev/null +++ b/src/pal/game/00504F78.c @@ -0,0 +1,50 @@ +#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_00220BE8; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +extern s32 func_00505040(void *, Object *, f32); +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_00504F78(void *context, u32 id, f32 time) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + result = func_00505040(context, p, time); + } + return result; +} diff --git a/src/pal/game/005052D0.c b/src/pal/game/005052D0.c new file mode 100644 index 000000000..6c08ea74a --- /dev/null +++ b/src/pal/game/005052D0.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 *, f32, f32); +extern char D_00335F60[]; +extern Callback func_00508A38(void *, u32); +s32 func_005052D0(s32 handle, f32 a, f32 b) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508A38(D_00335F60, type); + if (callback) + result = callback(obj, a, b); + } + return result; +} diff --git a/src/pal/game/005053D0.c b/src/pal/game/005053D0.c new file mode 100644 index 000000000..5d8a15438 --- /dev/null +++ b/src/pal/game/005053D0.c @@ -0,0 +1,52 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; + char padC[8]; + f32 value; +}; +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_005053D0(u32 id, f32 value) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + p->value = value; + result = 1; + } + return result; +} diff --git a/src/pal/game/00505488.c b/src/pal/game/00505488.c new file mode 100644 index 000000000..8a8bc6e19 --- /dev/null +++ b/src/pal/game/00505488.c @@ -0,0 +1,54 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + char pad[0x14]; + s32 (*isType)(Object *, u32); +} VTable; +struct Object { + char pad[8]; + VTable *vtable; + char padC[12]; + f32 value; +}; +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)); +} +/* Stores a float in the validated object's value field. */ +s32 func_00505488(u32 id, f32 value) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + p->value = value; + result = 1; + } + return result; +} diff --git a/src/pal/game/00505540.c b/src/pal/game/00505540.c new file mode 100644 index 000000000..5bdf8aa51 --- /dev/null +++ b/src/pal/game/00505540.c @@ -0,0 +1,46 @@ +#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_00220BE8; +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_00220BE8)) + return obj; + return 0; +} +f32 func_00505540(s32 handle) +{ + f32 result = 255.0f; + Object *obj = resolve(handle); + if (obj) + result = *(f32 *)((char *)obj + 0x14); + return result; +} 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/005056E0.c b/src/pal/game/005056E0.c new file mode 100644 index 000000000..ca00f6305 --- /dev/null +++ b/src/pal/game/005056E0.c @@ -0,0 +1,53 @@ +#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_00336038[]; +extern Callback func_00508AA8(void *, u32); +s32 func_005056E0(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_00336038, type); + if (callback) + result = callback(obj, a, b); + } + return result; +} diff --git a/src/pal/game/005057D8.c b/src/pal/game/005057D8.c new file mode 100644 index 000000000..c7be6740e --- /dev/null +++ b/src/pal/game/005057D8.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 *, f32 *, f32 *); +extern char D_00336080[]; +extern Callback func_00508AA8(void *, u32); +s32 func_005057D8(s32 handle, f32 *a, f32 *b) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508AA8(D_00336080, type); + if (callback) + result = callback(obj, a, b); + } + return result; +} diff --git a/src/pal/game/00505950.c b/src/pal/game/00505950.c new file mode 100644 index 000000000..c41b62d6d --- /dev/null +++ b/src/pal/game/00505950.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 *, f32, f32); +extern char D_00336778[]; +extern Callback func_00508B18(void *, u32); +s32 func_00505950(s32 handle, f32 x, f32 y) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508B18(D_00336778, type); + if (callback) + result = callback(obj, x, y); + } + return result; +} diff --git a/src/pal/game/00505A50.c b/src/pal/game/00505A50.c new file mode 100644 index 000000000..1761f23dd --- /dev/null +++ b/src/pal/game/00505A50.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_00336230[]; +extern Callback func_00508B98(void *, u32); +s32 func_00505A50(s32 handle, u32 value) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508B98(D_00336230, type); + if (callback) + result = callback(obj, value); + } + 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/00505F00.c b/src/pal/game/00505F00.c new file mode 100644 index 000000000..18b0b5132 --- /dev/null +++ b/src/pal/game/00505F00.c @@ -0,0 +1,53 @@ +#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, s32); +extern char D_00336548[]; +extern Callback func_00508D68(void *, u32); +s32 func_00505F00(s32 handle, u32 a, s32 b) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508D68(D_00336548, type); + if (callback) + result = callback(obj, a, b); + } + return result; +} diff --git a/src/pal/game/00506000.c b/src/pal/game/00506000.c new file mode 100644 index 000000000..a21073e5b --- /dev/null +++ b/src/pal/game/00506000.c @@ -0,0 +1,55 @@ +#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; + struct { + u32 f0 : 1; + u32 rest : 31; + } flags; +}; +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_00220BE8; +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_00220BE8)) + return obj; + return 0; +} +s32 func_00506000(s32 handle, s32 enabled) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + result = 1; + if (enabled) + obj->flags.f0 = 1; + else + obj->flags.f0 = 0; + } + 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/005062D0.c b/src/pal/game/005062D0.c new file mode 100644 index 000000000..1e8ddd065 --- /dev/null +++ b/src/pal/game/005062D0.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 *, const char *); +extern Callback func_00508F28(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_003360C8[]; +static inline Callback handler(u32 kind) +{ + return func_00508F28(D_003360C8, kind); +} +s32 func_005062D0(u32 id, const char *text) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + Callback callback = handler(p->vtable->getType(p)); + if (callback) + result = callback(p, text); + } + return result; +} diff --git a/src/pal/game/005063C0.c b/src/pal/game/005063C0.c new file mode 100644 index 000000000..0c263b067 --- /dev/null +++ b/src/pal/game/005063C0.c @@ -0,0 +1,53 @@ +#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_003361A0[]; +extern Callback func_00508B98(void *, u32); +s32 func_005063C0(s32 handle, u32 value) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00508B98(D_003361A0, type); + if (callback) + result = callback(obj, value); + } + 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/00506678.c b/src/pal/game/00506678.c new file mode 100644 index 000000000..ae2d1cfdd --- /dev/null +++ b/src/pal/game/00506678.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_00336798[]; +extern Callback func_00509008(void *, u32); +s32 func_00506678(s32 handle, u32 value) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_00509008(D_00336798, type); + if (callback) + result = callback(obj, value); + } + return result; +} diff --git a/src/pal/game/00506878.c b/src/pal/game/00506878.c new file mode 100644 index 000000000..654c98105 --- /dev/null +++ b/src/pal/game/00506878.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 *, void *, void *); +extern char D_00336428[]; +extern Callback func_005090F8(void *, u32); +s32 func_00506878(s32 handle, void *a, void *b) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) { + u32 type = obj->vtable->type(obj); + Callback callback = func_005090F8(D_00336428, type); + if (callback) + result = callback(obj, a, b); + } + 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/00507030.c b/src/pal/game/00507030.c new file mode 100644 index 000000000..2098e0e2b --- /dev/null +++ b/src/pal/game/00507030.c @@ -0,0 +1,47 @@ +#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_00220BEC; +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_00220BEC)) + return obj; + return 0; +} +extern s32 func_0050D870(Object *, s32, s32); +s32 func_00507030(s32 handle, s32 other, s32 index) +{ + s32 result = 0; + Object *obj = resolve(handle); + if (obj) + result = func_0050D870(obj, other, index); + return result; +} diff --git a/src/pal/game/005070F8.c b/src/pal/game/005070F8.c new file mode 100644 index 000000000..131f04f34 --- /dev/null +++ b/src/pal/game/005070F8.c @@ -0,0 +1,50 @@ +#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_0050D960(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_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)); +} +/* Removes a child from the validated object. */ +s32 func_005070F8(u32 id, u32 child) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) + result = func_0050D960(p, child); + 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/005073F0.c b/src/pal/game/005073F0.c new file mode 100644 index 000000000..cb60295f7 --- /dev/null +++ b/src/pal/game/005073F0.c @@ -0,0 +1,52 @@ +#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_0050FE20(Object *); +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)); +} +/* Resets the validated object's transient state. */ +s32 func_005073F0(u32 id) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + func_0050FE20(p); + result = 1; + } + return result; +} diff --git a/src/pal/game/005074A0.c b/src/pal/game/005074A0.c new file mode 100644 index 000000000..a3faa0bb8 --- /dev/null +++ b/src/pal/game/005074A0.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; +}; +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_0050FF90(Object *, f32); +extern void func_0050FFB0(Object *, s32); +extern void func_0050FFD8(Object *, 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_005074A0(u32 id, s32 a, s32 b, f32 value) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + func_0050FF90(p, value); + func_0050FFB0(p, a); + func_0050FFD8(p, b); + result = 1; + } + return result; +} diff --git a/src/pal/game/005075A0.c b/src/pal/game/005075A0.c new file mode 100644 index 000000000..7899ca406 --- /dev/null +++ b/src/pal/game/005075A0.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_00220BEC; +extern Manager *func_00502150(void); +extern Object *func_00501658(void *, u32); +extern void func_0050DEB8(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_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_005075A0(u32 id, s32 mask, s32 enabled) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + func_0050DEB8(p, mask, enabled); + result = 1; + } + return result; +} diff --git a/src/pal/game/00507690.c b/src/pal/game/00507690.c new file mode 100644 index 000000000..36c2aa733 --- /dev/null +++ b/src/pal/game/00507690.c @@ -0,0 +1,52 @@ +#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 s32 func_00510060(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)); +} +/* Applies both state choices to a validated object. */ +s32 func_00507690(u32 id, s32 a, s32 b) +{ + s32 result = 0; + Object *p = getTyped(id); + if (p) { + func_00510060(p, a, b); + result = 1; + } + 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/00507828.c b/src/pal/game/00507828.c new file mode 100644 index 000000000..aaacc6f25 --- /dev/null +++ b/src/pal/game/00507828.c @@ -0,0 +1,18 @@ +#include "common.h" +extern s32 func_00509248(u32, s32), func_005063C0(u32, u32); +extern s32 func_00506978(u32, f32, f32), func_005052D0(u32, f32, f32), func_00505D18(u32, f32); +static inline s32 combine(s32 a, s32 b) +{ + return a & b; +} +s32 func_00507828(u32 id, s32 option, u32 color, f32 x, f32 y, f32 width, f32 height, f32 amount) +{ + s32 first = func_00509248(id, option); + s32 result = func_005063C0(id, color) != 0; + if (!first) + result = 0; + result = combine(result, func_00506978(id, width, height) != 0); + result = combine(result, func_005052D0(id, x, y) != 0); + result = combine(result, func_00505D18(id, amount) != 0); + return result; +} diff --git a/src/pal/game/00507C40.c b/src/pal/game/00507C40.c new file mode 100644 index 000000000..4ac1b5f67 --- /dev/null +++ b/src/pal/game/00507C40.c @@ -0,0 +1,47 @@ +#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); +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)); +} +s32 func_00507C40(u32 id) +{ + return getTyped(id) != 0; +} 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/0050A060.c b/src/pal/game/0050A060.c new file mode 100644 index 000000000..87bda48f7 --- /dev/null +++ b/src/pal/game/0050A060.c @@ -0,0 +1,34 @@ +#include "common.h" +typedef s32 (*Callback)(void *, u32 *, u32 *); +typedef struct { + u32 key; + Callback value; +} Entry; +typedef struct { + s32 pad; + s32 count; + Entry entries[8]; +} Table; +u8 D_0022221B = 0; +extern Callback func_00508E48(Table *, u32); +s32 func_0050A060(Table *a, u32 b, Callback c) +{ + if (a->count < 8 && !func_00508E48(a, b)) { + s32 i = 0; + char *values = (char *)a + 12; + Callback sentinel = (Callback)&D_0022221B; + 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/0050A1D8.c b/src/pal/game/0050A1D8.c new file mode 100644 index 000000000..8df77182b --- /dev/null +++ b/src/pal/game/0050A1D8.c @@ -0,0 +1,40 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + f32 x, y, w, h, a, b; +} Rect; +typedef struct { + char pad[0x14]; + s32 (*supports)(Object *, u32); + char rest[0x10]; + void (*bounds)(Object *, Rect *, Rect *, s32); +} Vtable; +struct Object { + s32 f0, f4; + Vtable *v; +}; +extern u32 D_00220BF8; +static inline void init(Rect *p) +{ + p->x = 0; + p->y = 0; + p->w = 1; + p->h = 1; + p->a = 0; + p->b = 0; +} +s32 func_0050A1D8(Object *p, f32 *x, f32 *y, f32 *w, f32 *h) +{ + Rect input, output; + if (p->v->supports(p, D_00220BF8)) { + init(&input); + init(&output); + p->v->bounds(p, &input, &output, 1); + *x = output.x; + *y = output.y; + *w = output.w; + *h = output.h; + return 1; + } + return 0; +} diff --git a/src/pal/game/0050A3D0.c b/src/pal/game/0050A3D0.c new file mode 100644 index 000000000..372ba476e --- /dev/null +++ b/src/pal/game/0050A3D0.c @@ -0,0 +1,35 @@ +#include "common.h" +typedef s32 (*Callback)(void *, u32); +typedef struct { + u32 key; + Callback value; +} Entry; +typedef struct { + s32 pad; + s32 count; + Entry entries[3]; +} Table; +u8 D_0022221F = 0; +extern Callback func_00509008(Table *, u32); +s32 func_0050A3D0(Table *table, u32 key, Callback value) +{ + if (table->count < 3 && !func_00509008(table, key)) { + s32 attempts = 0; + u32 size = 3; + char *values = (char *)table + 12; + Callback deleted = (Callback)&D_0022221F; + char *keys = (char *)table + 8; + u32 step = 0; + for (; attempts < 3; attempts++, step += 0x13D573) { + u32 offset = ((step + key % size) % size) * 8; + Callback *slot = (Callback *)(values + offset); + if (!*slot || *slot == deleted) { + *slot = value; + *(u32 *)(keys + offset) = key; + table->count++; + return 1; + } + } + } + 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/0050C758.c b/src/pal/game/0050C758.c new file mode 100644 index 000000000..e27fa9fa6 --- /dev/null +++ b/src/pal/game/0050C758.c @@ -0,0 +1,40 @@ +#include "common.h" +typedef struct Object Object; +typedef struct { + f32 x, y, w, h, a, b; +} Rect; +typedef struct { + char pad[0x14]; + s32 (*supports)(Object *, u32); + char rest[0x10]; + void (*bounds)(Object *, Rect *, Rect *, s32); +} Vtable; +struct Object { + s32 f0, f4; + Vtable *v; +}; +extern u32 D_00220C08; +static inline void init(Rect *p) +{ + p->x = 0; + p->y = 0; + p->w = 1; + p->h = 1; + p->a = 0; + p->b = 0; +} +s32 func_0050C758(Object *p, f32 *x, f32 *y, f32 *w, f32 *h) +{ + Rect input, output; + if (p->v->supports(p, D_00220C08)) { + init(&input); + init(&output); + p->v->bounds(p, &input, &output, 1); + *x = output.x; + *y = output.y; + *w = output.w; + *h = output.h; + return 1; + } + 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/0050CAE8.c b/src/pal/game/0050CAE8.c new file mode 100644 index 000000000..4c967af3a --- /dev/null +++ b/src/pal/game/0050CAE8.c @@ -0,0 +1,42 @@ +#include "common.h" + +typedef s32 (*Type2)(void *); +typedef struct Type3 { + u32 f0; + Type2 f4; +} Type3; +typedef struct Type1 { + s32 f0, f4; + Type3 f8[8]; +} Type1; +extern Type2 func_005091D8(Type1 *, u32); +u8 D_00222223 = 0; +/* Insert a unique key into one of eight open-addressed slots. */ +s32 func_0050CAE8(Type1 *table, u32 key, Type2 value) +{ + if (table->f4 < 8) { + if (func_005091D8(table, key)) + return 0; + { + s32 attempts = 0; + char *values = (char *)table + 0xC; + Type2 tombstone = (Type2)&D_00222223; + 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/0050EC18.c b/src/pal/game/0050EC18.c new file mode 100644 index 000000000..4bf527756 --- /dev/null +++ b/src/pal/game/0050EC18.c @@ -0,0 +1,48 @@ +#include "common.h" +typedef struct Data Data; +typedef struct { + char pad[0x14]; + s32 (*supports)(Data *, u32); +} Vtable; +typedef struct { + f32 x, y; +} Pair; +struct Data { + s32 f0, f4; + Vtable *v; + s32 fC; + f32 f10; + Pair f14, f1C, f24; + s32 f2C, f30, f34, f38, f3C; + f32 f40; + u32 f44, f48, f4C; + u16 f50, f52; + u8 f54, f55, f56, f57; + void *f58; +}; +extern s32 func_0050D040(Data *, Data *); +s32 func_0050EC18(Data *dst, Data *src) +{ + if (src->v->supports(src, 1)) { + func_0050D040(dst, src); + dst->fC = src->fC; + dst->f10 = src->f10; + dst->f14 = src->f14; + dst->f1C = src->f1C; + dst->f24 = src->f24; + dst->f30 = src->f30; + dst->f34 = src->f34; + dst->f40 = src->f40; + dst->f44 = src->f44; + dst->f48 = src->f48; + dst->f4C = src->f4C; + dst->f50 = src->f50; + dst->f52 = src->f52; + dst->f54 = src->f54; + dst->f55 = src->f55; + dst->f56 = src->f56; + dst->f58 = src->f58; + return 1; + } + return 0; +} diff --git a/src/pal/game/0050FD80.c b/src/pal/game/0050FD80.c new file mode 100644 index 000000000..f534b67a0 --- /dev/null +++ b/src/pal/game/0050FD80.c @@ -0,0 +1,46 @@ +#include "common.h" + +typedef struct Allocator Allocator; +typedef struct { + void *unused[3]; + void (*release)(Allocator *, void *); +} AllocatorVtable; +struct Allocator { + AllocatorVtable *vtable; +}; +typedef struct { + void *vtable; + void *context; +} Manager; +typedef struct { + char pad[8]; + void *vtable; + char padC[0x34]; + void *block; +} Object; +extern Manager D_00222138[]; +extern char D_003D3768[], D_003D3548[]; +extern Manager *func_00502150(void); +extern Allocator *func_00502218(Manager *, s32); +extern void func_0015DB98(void *); +static inline Manager *manager(void) +{ + Manager *p = D_00222138; + if (p->context) + return p; + return func_00502150(); +} +/* Releases owned storage and optionally deletes the object itself. */ +void func_0050FD80(Object *p, u32 flags) +{ + Allocator *allocator; + p->vtable = D_003D3768; + allocator = func_00502218(manager(), 1); + if (allocator) { + allocator->vtable->release(allocator, p->block); + p->block = 0; + } + p->vtable = D_003D3548; + if (flags & 1) + func_0015DB98(p); +} diff --git a/src/pal/game/00511530.c b/src/pal/game/00511530.c new file mode 100644 index 000000000..3ddd6d2b8 --- /dev/null +++ b/src/pal/game/00511530.c @@ -0,0 +1,45 @@ +#include "common.h" + +typedef struct Type2 { + char pad[0x34]; + f32 f34, f38; + char pad3C[4]; + u16 f40; + char pad42[14]; + u8 f50; +} Type2; +typedef struct Type1 { + char pad[0x1C]; + f32 f1C, f20; + char pad24[0x1C]; + Type2 *f40; + char pad44[4]; + f32 f48, f4C; +} Type1; +extern void func_00454B68(s32), func_00510158(Type1 *), func_00510510(Type1 *, f32 *, f32, f32); +s32 func_00511530(Type1 *p) +{ + s32 mode = p->f40->f50; + switch (mode) { + case 1: + func_00454B68(1); + break; + case 2: + func_00454B68(0); + break; + case 0: + default: + func_00454B68(0); + break; + } + if (p->f40->f40 & 4) { + Type2 *state; + func_00510158(p); + state = p->f40; + if (state->f40 & 0x80) + func_00510510(p, &state->f34, p->f1C, p->f48); + else + func_00510510(p, &state->f38, p->f20, p->f4C); + } + return 0; +} diff --git a/src/pal/game/00511BA0.c b/src/pal/game/00511BA0.c new file mode 100644 index 000000000..e32f6fa11 --- /dev/null +++ b/src/pal/game/00511BA0.c @@ -0,0 +1,34 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/frontbin/3F2238.c func_003F2268. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + void *type; + u8 *base; + u32 capacity; + s32 stride; + u32 used; + s32 count; + void **free_list; +} Pool; +void *func_00511BA0(Pool *pool) +{ + void **node = pool->free_list; + u32 offset, end; + if (node != 0) { + pool->free_list = *node; + pool->count++; + return node; + } + offset = pool->used; + end = offset + pool->stride; + if (pool->capacity < end) + return 0; + { + u8 *result = pool->base + offset; + pool->used = end; + pool->count++; + return result; + } +} 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/00524408.c b/src/pal/game/00524408.c new file mode 100644 index 000000000..cfce0390d --- /dev/null +++ b/src/pal/game/00524408.c @@ -0,0 +1,45 @@ +#include "common.h" +/* Pool records occupy 0x20 bytes: 46F948 reads flag+15 and clears0x20. */ +typedef struct Node { + char pad[0x10]; + struct Node *next; + char tail[0xC]; +} Node; +typedef struct { + char pad[0x24]; + char *table; + char gap[0x18]; + char *entry; + f32 position, scale; + u16 value; + char gap4E[2]; + Node *nodes; + u8 index; +} State; +typedef struct { + char pad[0x2EF0]; + State *state; +} Object; +extern void func_0046F948(Node *); +static inline u32 add(u32 offset, u32 base) +{ + return offset + base; +} +void func_00524408(Object *p, s32 index, s32 frame) +{ + State *state = p->state; + Node *node = state->nodes; + while (node) { + func_0046F948(node); + node = node->next; + } + state->index = index; + state->nodes = 0; + { + char *entry = *(char **)(state->table + (index << 2) + 0x48); + state->position = (f32)frame; + state->scale = 1.0f; + state->entry = entry; + state->value = *(u16 *)((char *)add(frame << 2, (u32)entry) + 0x20); + } +} 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/00541A50.c b/src/pal/game/00541A50.c new file mode 100644 index 000000000..f798464ca --- /dev/null +++ b/src/pal/game/00541A50.c @@ -0,0 +1,34 @@ +/* Reference: OpenRAC/rac3-decomp@cd0e7c20fd8a93116566ba2e024fa2f3536bd30c + * src/levels/shared/L39_0066C748.c func_L39_0066D888. + * Independently reconstructed from RAC4 PAL retail. */ +#include "common.h" + +typedef struct { + u8 prefix[0x44]; + union { + u8 byte; + s32 word; + } team; + u8 gap[8]; + u8 sequence; +} Player; +extern s32 func_005120D8(s32); +s32 func_00541A50(Player *player, u8 sequence, u8 team) +{ + s32 changed = 0; + s32 same = 1; + if (team != player->team.byte) { + same = 0; + if (func_005120D8(team) != 0) { + player->team.word = team; + changed = 1; + } + } + if (same) { + if (player->sequence < sequence) + changed = 1; + else if (player->sequence >= 193 && sequence <= 63) + changed = 1; + } + return changed; +} diff --git a/src/pal/game/0054AFA0.c b/src/pal/game/0054AFA0.c new file mode 100644 index 000000000..d9efbe8e7 --- /dev/null +++ b/src/pal/game/0054AFA0.c @@ -0,0 +1,20 @@ +#include "common.h" + +extern const char *func_0045E850(s32); +extern s32 func_0011D920(char *, const char *, ...); +extern void func_00549050(const char *, s32, s32), func_004978E8(s32, const char *); +extern char D_00220F68[], D_00355220[]; +extern s32 D_0022216C; +void func_0054AFA0(s16 id, s32 slot, s32 duration) +{ + char buffer[128]; + const char *format; + if (duration > 0 && id > 0 && slot >= 0) { + const char *label; + format = D_00220F68; + label = func_0045E850(0x2558); + func_0011D920(buffer, format, label, func_0045E850(id)); + func_00549050(buffer, slot, duration); + } + func_004978E8(D_0022216C, D_00355220); +} diff --git a/src/pal/game/0054B6F8.c b/src/pal/game/0054B6F8.c new file mode 100644 index 000000000..73f86f171 --- /dev/null +++ b/src/pal/game/0054B6F8.c @@ -0,0 +1,16 @@ +#include "common.h" +typedef struct { + u8 prefix[9]; + u8 items[10]; + u8 rest[37]; +} Record; +extern Record *func_0054B068(s32); +s32 func_0054B6F8(s32 id, s32 record) +{ + Record value = *func_0054B068(record); + s32 i; + for (i = 0; i < 10; i++) + if (value.items[i] == id) + return 1; + return 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/0054C330.c b/src/pal/game/0054C330.c new file mode 100644 index 000000000..5d744b87c --- /dev/null +++ b/src/pal/game/0054C330.c @@ -0,0 +1,25 @@ +#include "common.h" +typedef struct { + s32 f0, type, level, total; +} Data; +typedef struct { + u8 pad[0x21]; + u8 a, b, c, d, e; + u8 pad26[0x10]; + s16 total; +} State; +extern State D_00171BC0; +s32 func_0054C330(Data *p) +{ + if (p->type == 1 && D_00171BC0.a < p->level) + return 0; + if (p->type == 2 && D_00171BC0.b < p->level) + return 0; + if (p->type == 3 && D_00171BC0.c < p->level) + return 0; + if (p->type == 4 && D_00171BC0.d < p->level) + return 0; + if (p->type == 5 && D_00171BC0.e < p->level) + return 0; + return D_00171BC0.total >= p->total; +} 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); +} diff --git a/src/pal/game/0054E3E8.c b/src/pal/game/0054E3E8.c new file mode 100644 index 000000000..b6a844dfd --- /dev/null +++ b/src/pal/game/0054E3E8.c @@ -0,0 +1,13 @@ +#include "common.h" + +extern s32 D_00172438[]; +extern char D_003559E0[], D_003559C0[]; +f32 D_002210D0 = 65.0f, D_002210D4 = 35.0f, D_002210D8 = 56.0f, D_002210DC = 51.0f; +u64 D_002210E0 = 0xFFFFFFFFFF696969ULL; +extern void func_00457E60(f32, f32, u64, const void *, f32, s32); +void func_0054E3E8(void) +{ + if (!D_00172438[0]) + func_00457E60(D_002210D8, D_002210DC, D_002210E0, D_003559E0, 1.0f, -1); + func_00457E60(D_002210D0, D_002210D4, D_002210E0, D_003559C0, 1.0f, -1); +} diff --git a/src/pal/overlays/shared/L00_006A3670.c b/src/pal/overlays/shared/L00_006A3670.c new file mode 100644 index 000000000..6967e7b20 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3670.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022348A = 0; + +s32 func_L00_006A3670(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022348A); +} diff --git a/src/pal/overlays/shared/L00_006A36E0.c b/src/pal/overlays/shared/L00_006A36E0.c new file mode 100644 index 000000000..75619cd99 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A36E0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022348B = 0; + +s32 func_L00_006A36E0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022348B); +} diff --git a/src/pal/overlays/shared/L00_006A37D0.c b/src/pal/overlays/shared/L00_006A37D0.c new file mode 100644 index 000000000..79e676860 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A37D0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022348D = 0; + +s32 func_L00_006A37D0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022348D); +} diff --git a/src/pal/overlays/shared/L00_006A38C0.c b/src/pal/overlays/shared/L00_006A38C0.c new file mode 100644 index 000000000..11ba740ba --- /dev/null +++ b/src/pal/overlays/shared/L00_006A38C0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022348F = 0; + +s32 func_L00_006A38C0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022348F); +} diff --git a/src/pal/overlays/shared/L00_006A3930.c b/src/pal/overlays/shared/L00_006A3930.c new file mode 100644 index 000000000..c9d622a4e --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3930.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223490 = 0; + +s32 func_L00_006A3930(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223490); +} diff --git a/src/pal/overlays/shared/L00_006A39A0.c b/src/pal/overlays/shared/L00_006A39A0.c new file mode 100644 index 000000000..cb4d50020 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A39A0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223491 = 0; + +s32 func_L00_006A39A0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223491); +} diff --git a/src/pal/overlays/shared/L00_006A3A10.c b/src/pal/overlays/shared/L00_006A3A10.c new file mode 100644 index 000000000..540184384 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3A10.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223492 = 0; + +s32 func_L00_006A3A10(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223492); +} diff --git a/src/pal/overlays/shared/L00_006A3A80.c b/src/pal/overlays/shared/L00_006A3A80.c new file mode 100644 index 000000000..780291d1c --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3A80.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223493 = 0; + +s32 func_L00_006A3A80(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223493); +} diff --git a/src/pal/overlays/shared/L00_006A3AF0.c b/src/pal/overlays/shared/L00_006A3AF0.c new file mode 100644 index 000000000..384a08217 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3AF0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223494 = 0; + +s32 func_L00_006A3AF0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223494); +} diff --git a/src/pal/overlays/shared/L00_006A3B60.c b/src/pal/overlays/shared/L00_006A3B60.c new file mode 100644 index 000000000..754e6b577 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3B60.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223495 = 0; + +s32 func_L00_006A3B60(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223495); +} diff --git a/src/pal/overlays/shared/L00_006A3BD0.c b/src/pal/overlays/shared/L00_006A3BD0.c new file mode 100644 index 000000000..d71e4cc46 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3BD0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223496 = 0; + +s32 func_L00_006A3BD0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223496); +} diff --git a/src/pal/overlays/shared/L00_006A3CC0.c b/src/pal/overlays/shared/L00_006A3CC0.c new file mode 100644 index 000000000..3586f1c1b --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3CC0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223498 = 0; + +s32 func_L00_006A3CC0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223498); +} diff --git a/src/pal/overlays/shared/L00_006A3D30.c b/src/pal/overlays/shared/L00_006A3D30.c new file mode 100644 index 000000000..41564fd50 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3D30.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_00223499 = 0; + +s32 func_L00_006A3D30(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_00223499); +} diff --git a/src/pal/overlays/shared/L00_006A3DA0.c b/src/pal/overlays/shared/L00_006A3DA0.c new file mode 100644 index 000000000..ee5fb17e3 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3DA0.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022349A = 0; + +s32 func_L00_006A3DA0(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022349A); +} diff --git a/src/pal/overlays/shared/L00_006A3E10.c b/src/pal/overlays/shared/L00_006A3E10.c new file mode 100644 index 000000000..94870a6a2 --- /dev/null +++ b/src/pal/overlays/shared/L00_006A3E10.c @@ -0,0 +1,10 @@ +/* cflags: -O2 -G8 -Wuninitialized */ +#include "pal/word_probe.h" + +/* Address-only marker; its initial byte is zero in the checked PAL image. */ +u8 D_0022349B = 0; + +s32 func_L00_006A3E10(void *table, s32 key) +{ + return pal_word_probe(table, key, (s32) &D_0022349B); +}